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,所以這看起來應該可以工作。 –

相關問題