我正在做webview android应用程序,并且我通过"https://appassets.androidplatform.net/assets/www/index.html"“加载我的html和js代码,但在我的js代码中,我使用ajax请求到API,而API是在没有ssl的情况下运行的,所以js不允许我从https源向http服务器发出ajax请求。当我尝试使用http://appassets.androidplatform.net/assets/www/index.html时,我得到一个错误'net::ERR_NAME_NOT_RESOLVED‘。有没有办法在不购买ssl用于API服务器或使用file://协议加载代码的情况下使其工作?
我不知道它是否有帮助,但以下是我的WebViewAssetLoader代码:
assetLoader = new WebViewAssetLoader.Builder()
.addPathHandler("/assets/", new WebViewAssetLoader.AssetsPathHandler(this))
.addPathHandler("/res/", new WebViewAssetLoader.ResourcesPathHandler(this))
.build();
和
public WebResourceResponse shouldInterceptRequest(WebView view,
WebResourceRequest request) {
if (String.valueOf(request.getUrl()).endsWith(".js")) {
try {
return new WebResourceResponse("text/javascript", "UTF-8", getAssets().open(String.valueOf(request.getUrl()).replace("http://appassets.androidplatform.net/assets/","")));
} catch (IOException e) {
e.printStackTrace();
}
}
return assetLoader.shouldInterceptRequest(request.getUrl());
}
发布于 2020-10-05 05:05:04
答案很简单,首先,我必须在标签中添加android:usesCleartextTraffic="true“。其次,我必须在我的活动中使用webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);。
https://stackoverflow.com/questions/64080873
复制相似问题