首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用不带ssl的appassets.androidplatform.net (用于通过http发送ajax请求)

使用不带ssl的appassets.androidplatform.net (用于通过http发送ajax请求)
EN

Stack Overflow用户
提问于 2020-09-27 01:52:34
回答 1查看 443关注 0票数 0

我正在做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代码:

代码语言:javascript
运行
复制
assetLoader = new WebViewAssetLoader.Builder()
            .addPathHandler("/assets/", new WebViewAssetLoader.AssetsPathHandler(this))
            .addPathHandler("/res/", new WebViewAssetLoader.ResourcesPathHandler(this))
            .build();

代码语言:javascript
运行
复制
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());
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-05 05:05:04

答案很简单,首先,我必须在标签中添加android:usesCleartextTraffic="true“。其次,我必须在我的活动中使用webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64080873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档