當前位置:首頁 » 安卓系統 » webview跨域android

webview跨域android

發布時間: 2024-10-03 18:16:22

⑴ android開發中,webview常用於顯示網頁或h5頁面,一個遇到跨域方面的坑。

1.跨域cookie讀取

什麼是跨域,簡單的說就是不同的域名,我們都知道在pc上我們用瀏覽器訪問網址,不同的網址都會在本地存儲一些cookie信息,這樣就可以實現比如自動登錄等功能,在pc上不同域名是不能相互讀取其他域下的cookie信息的(非web專業開發人員,如果理解有誤,歡迎指出)。

但是在 android 上在api 23之前,是可以跨域讀取cookie的,比如A域寫入一個userId的cookie,B域可以讀取該值。但是在23時,系統將該值設置成了false,不再讓跨域讀取了。如果你的應用有跨域讀取需求,怎麼辦?可以採用如下方式進行開啟:

/*** 設置跨域cookie讀取*/

public final void setAcceptThirdPartyCookies() {

//target 23 default false, so manual set true

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {            CookieManager.getInstance().setAcceptThirdPartyCookies(webView,true);       

}  

}

2.http/https混合載入

在現階段,很多網站都改成了https進行訪問,https可以提升訪問網站的安全性,防止信息被竊取,如果所有的網頁都是https且網頁內的鏈接也是都是https,那就沒有混合載入(文本區域https,圖片文件http載入)的問題了。但是很多資源現階段還沒有改變成https訪問,往往頁面都嵌入了http的鏈接。這種混合網頁如果不進行處理,直接載入是會出現錯誤的。怎麼解決這個問題?

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 

webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);

}

這也是一個分版本的函數,在api23之前,默認是可以混合載入的,但是在23時,默認值改成了MIXED_CONTENT_NEVER_ALLOW,因此如果你有混合載入的需求,設置setMixedContentMode為MIXED_CONTENT_ALWAYS_ALLOW。

3.無法解決跨域訪問問題,可以嘗試給webview設置如下配置,已解決該問題;

if (Build.VERSION.SDK_INT >= 16) {

Class clazz =webView.getSettings().getClass();

Method method = clazz.getMethod("", boolean.class);

if (method != null) {

method.invoke(webView.getSettings(), true);

}

}

} catch (IllegalArgumentExceptione) {

e.printStackTrace();

} catch (NoSuchMethodException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

} catch (InvocationTargetException e) {

e.printStackTrace();

}

⑵ WKWebView 解決跨域問題

WKWebView 解決跨域問題

WKUserContentController*userContentController = [[WKUserContentControlleralloc] init]; [:userContentController];WKWebViewConfiguration*config = [[WKWebViewConfigurationalloc] init]; config.userContentController = userContentController; config.preferences.javaScriptEnabled =YES; config.preferences. =YES; config. =YES;// 是否支持記憶讀取[config.preferences setValue:@YES forKey:@"allowFileAccessFromFileURLs"];if(@available(iOS10.0, *)) { [config setValue:@YES forKey:@""]; }

⑶ 如何在手機上運行python

有些事情你不要想像得很狹義,鑽進死胡同。
我們其實是創建一個fastapi或者django項目,把api暴露出來,api那是網路協議,Python創建的基本上都是restfull類型的webapi,這是很常見的類型,你部署好後,寫好api函數方法,任何東西都能通過網路調用不僅僅是手機,使用postman工具測試下,能通就能使用。
手機怎麼使用呢?直接手機打開網頁,網頁js請求api就好了,前提條件要設置瀏覽器跨域。或者手機後端請求,現在其實android、ios是做的混合開發,其實就是拖放一個webview或者一個控制項,把前端ui載入進去,如果要使用後端的交互下就好了,如果不需要的純粹前端js搞定。那麼基礎有了你只需要在api伺服器函數里做下處理,那可不就是手機調用python嗎????

⑷ webview可以設置允許跨域嗎

webview其實就是一個瀏覽器,而是否允許跨域,是由你訪問的伺服器控制的(默認不允許),如果是nginx,配置如下:
http {
......
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers X-Requested-With;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
......
}

其實就是在Http響應頭中加了點東西,其他的伺服器也類似這樣

熱點內容
直男Qq密碼一般會設成什麼 發布:2024-11-24 10:28:00 瀏覽:198
蘋果怎麼傳照片藍牙到安卓 發布:2024-11-24 10:21:04 瀏覽:856
比亞迪秦值得買哪個配置 發布:2024-11-24 10:20:23 瀏覽:73
河北智慧網關伺服器雲伺服器 發布:2024-11-24 10:20:22 瀏覽:761
linux啟動服務命令 發布:2024-11-24 10:15:25 瀏覽:703
住宅電子密碼如何修改 發布:2024-11-24 10:09:48 瀏覽:358
ipad相冊建立子文件夾 發布:2024-11-24 10:09:00 瀏覽:587
qq密碼是怎麼被盜的 發布:2024-11-24 10:00:18 瀏覽:906
壓縮類型的 發布:2024-11-24 09:58:53 瀏覽:264
訪問國外報告 發布:2024-11-24 09:55:09 瀏覽:740