WebView在HTTPS网址上显示net :: ERR_CLEARTEXT_NOT_PERMITTED [英] WebView shows net::ERR_CLEARTEXT_NOT_PERMITTED on HTTPS url

查看:208
本文介绍了WebView在HTTPS网址上显示net :: ERR_CLEARTEXT_NOT_PERMITTED的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用HTTPS加载适合安全协议的网址,但是当我尝试在WebView上加载时,android向我显示了net :: ERR_CLEARTEXT_NOT_PERMITTED.为什么?是HTTPS是什么问题?

I'm trying to load an url that fit security protocols with HTTPS, but when I'm trying to load on a WebView, android shows me net::ERR_CLEARTEXT_NOT_PERMITTED. Why? is a HTTPS what is the problem?

显示它的源代码为:

public class InternalWebBrowserActivityHelperImpl implements InternalWebBrowserActivityHelper, Constants {

    private final String TAG = getClass().getSimpleName();

    @NonNull
    private InternalWebBrowserActivityView activityView;

    public InternalWebBrowserActivityHelperImpl(@NonNull InternalWebBrowserActivityView activityView){
        this.activityView = activityView;
    }

    public WebChromeClient getWebChromeClient = new WebChromeClient() {

        @Override
        public void onProgressChanged(WebView view, int newProgress) {

            super.onProgressChanged(view, newProgress);

        }
    };

    public WebViewClient getWebViewClient() {

        return new WebViewClient() {

            @Override
            public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
                super.onReceivedError(view, request, error);
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                    LoggerManager.handlesError("onReceivedError", request.getUrl().toString());
                }else{
                    LoggerManager.handlesError("onReceivedError", error.toString());
                }
                activityView.hideLoadingView();
                activityView.showWebView();
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);

                LoggerManager.handlesError("onPageFinished", url);
                activityView.hideLoadingView();
                activityView.showWebView();
            }

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {

                //activityView.showLoadingView();
                LoggerManager.handlesError("override", url);
                return super.shouldOverrideUrlLoading(view, url);
            }
        };
    }

    @Override
    public void setupHelper(String url) {
        //7activityView.showLoadingView();
        activityView.showWebView();

        WebSettings.ZoomDensity zoomDensity = WebSettings.ZoomDensity.FAR;
        activityView.getFullWebView().getSettings().setJavaScriptEnabled(true);
        activityView.getFullWebView().getSettings().setDomStorageEnabled(true); // Add this


        activityView.getFullWebView().getSettings().setDefaultZoom(zoomDensity);
        activityView.getFullWebView().getSettings().setSupportZoom(true);
        activityView.getFullWebView().getSettings().setBuiltInZoomControls(true);
        activityView.getFullWebView().requestFocus(View.FOCUS_DOWN);

        activityView.getFullWebView().setWebChromeClient(getWebChromeClient);
        activityView.getFullWebView().setWebViewClient(getWebViewClient());

        activityView.getFullWebView().loadUrl(url);
    }
}

谢谢

推荐答案

您确定提供给Web视图的URL是否在HTTPS中?

Are you sure the URL you give to your webview is in HTTPS ?

否则,一个快速解决方案是将以下行添加到您的application中,如下所示:

Otherwise a quickfix would be to add the below line in your application as shown below:

<application
    android:usesCleartextTraffic="true"
    android:networkSecurityConfig="@xml/network_security_config"
    ....
</application>

我强烈建议您创建network_security_config以仅允许您的域和子域.这是一个快速的教程

I strongly advise that you create the network_security_config to only allow your domain and subdomain. Here is a quick tutorial

这篇关于WebView在HTTPS网址上显示net :: ERR_CLEARTEXT_NOT_PERMITTED的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆