You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android WebView自动将HTTP请求转为HTTPS报net::ERR_SSL_PROTOCOL_ERROR如何解决

Android WebView加载HTTP资源自动转HTTPS报错解决方案

即使已经配置明文流量权限,该问题通常由WebView自身安全策略、HSTS规则、服务端/前端跳转逻辑导致,可按以下方案排查解决:

  • 调整WebView基础配置
    关闭WebView默认的HTTP资源自动升级、混合内容拦截策略:
    WebSettings webSettings = webView.getSettings();
    // 允许HTTP和HTTPS混合内容加载
    webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
    // Android 10及以上版本禁用HTTP自动升级
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
        webSettings.setAllowHttpContent(true);
    }
    
  • 重写WebViewClient拦截跳转
    主动拦截URL加载逻辑,避免系统自动将HTTP转为HTTPS加载,针对性处理SSL协议错误:
    webView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
            String targetUrl = request.getUrl().toString();
            // 原始请求为HTTP时强制加载对应地址,不执行默认跳转逻辑
            if (targetUrl.startsWith("http://")) {
                view.loadUrl(targetUrl);
                return true;
            }
            return super.shouldOverrideUrlLoading(view, request);
        }
    
        // 测试环境可使用该配置处理HTTP转HTTPS导致的SSL错误,生产环境请勿全局忽略SSL错误避免安全风险
        @Override
        public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
            if (error.getPrimaryError() == SslError.SSL_PROTOCOL_ERROR) {
                handler.proceed();
            } else {
                handler.cancel();
            }
        }
    });
    
  • 排查域名与服务端配置
    • 确认目标域名未被加入系统HSTS预加载列表,加入该列表的域名会被全局强制走HTTPS,可更换测试域名解决
    • 检查服务端是否配置了301/302跳转规则,强制将HTTP请求跳转至HTTPS,如有需要调整服务端配置
    • 检查返回的HTML页面中是否存在JS跳转HTTPS的前端逻辑,如有修改对应前端代码
  • 验证明文流量配置
    确认android:usesCleartextTraffic="true"属性正确配置在AndroidManifest.xml的<application>根节点下,若应用使用了自定义网络安全配置文件,需在文件中明确放行对应域名的明文流量权限。

内容的提问来源于stack exchange,提问作者Amish Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 14:15:03