0

我有一个像http://username:[email protected]:port//test/test.mjepd.cgi这样的网址。 它实际上是在应用程序浏览器中传输相机。Inapp浏览器基本身份验证不起作用

但是,它适用于笔记本电脑和计算机,而不是在移动网络视图中。 它简单不会加载。

通过浏览一些论坛,我发现应用程序浏览器webview中移动设备不支持通过基本身份验证凭据。

任何帮助,这是高度赞赏。

回答

0

选项1:Authorization头添加到请求:

HashMap<String, String> headers = new HashMap<String, String>(); 
    String auth = "Basic " + Base64.encodeToString(password.getBytes("UTF-8"), Base64.NO_WRAP); 
    headers.put("Authorization", auth); 
    webview.loadUrl(url, headers); 

选项2:

webview.setWebViewClient(new WebViewClient() { 
     public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm) { 
      if (realm.equals(expectedRealm) && host.equals(ipaddress)) { 
       handler.proceed(username, password); 
      } else { 
       handler.cancel(); 
      } 
     } 
    }); 

另外:通过回调来处理验证如果必须使用基本身份验证,做自己一个忙和使用https:;不要以明文形式发送密码。

+0

这个URL调用一个摄像头,然后开始流式传输。它没有启用选项,所以我无法用头来调用它。此外,我正在使用离子,混合框架。它不支持带有任何可用插件的onReceivedHttpAuthRequest。 – Naju

+0

道歉,没有注意到混合移动应用程序标签。我从来没有用Ionic,Cordova或Angular.js开发过。我浏览了一大堆文档,我确信有办法通过自定义插件或自定义Angular模块来完成此操作。希望有离子体验的人可以回答。我的另一个想法是将您的凭证传递给URL中的查询参数,并让服务器/防火墙重写URL以将证书移至正确的位置。 Apache mod_write在认证之前重写了URL,所以这看起来应该可以工作。 –

相关问题