android webview 加载https --忽略证书

本文介绍如何解决Android WebView加载HTTPS网页时因证书未被认证而导致的空白页问题。通过设置WebViewClient并重写onReceivedSslError方法,可以实现忽略证书错误继续加载页面。

问题

Android 中 ,Webview 可以通过loadUrl(String url) 等方法,加载网页 到应用 ,
http 可以直接加载,但 https 是经过ssl 加密的,如果这个网站的安全证书在Android无法得到认证,WebView加载的网页就会变成一个空白页,同时也不会弹出任何提示。

解决方案1

忽略证书的方式

webview.setWebViewClient(new WebViewClient() {
    @Override
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
        LogUtil.e("web","页面加载ssl onReceivedSslError = "+ error.toString());
        //handler.cancel();// 默认的处理方式,WebView变成空白页
        handler.proceed();//忽略证书的错误继续Load页面内容,不会显示空白页面
        // super.onReceivedSslError(view, handler, error);
    }
});
WebView 加载 HTTPS 页面时出现白屏是一个常见的问题,尤其是在 Android 和 Electron 等平台上。该问题通常与 SSL/TLS 证书验证、重定向逻辑、WebView 配置等因素有关。以下是详细的解决方案: ### 1. 忽略 SSL 证书错误(适用于测试环境) 在 Android 平台上,如果 HTTPS 页面使用的是自签名证书证书链不完整,可以通过重写 `onReceivedSslError` 方法来忽略证书错误。需要注意的是,这种方式不适用于生产环境,因为它会降低安全性。 ```java webView.setWebViewClient(new WebViewClient() { @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { handler.proceed(); // 接受所有证书忽略 SSL 错误 [^4] } }); ``` ### 2. 正确处理 URL 重定向 有时白屏问题可能是由于 WebView 拦截了某些 URL 请求,但没有正确处理重定向逻辑。确保在 `shouldOverrideUrlLoading` 方法中对拦截的 URL 进行合理的处理。 ```java webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { webView.loadUrl(url); // 确保在 4.0 及以上版本中加载正确的 URL [^1] return true; } }); ``` ### 3. 启用必要的 WebView 设置 确保 WebView 的基础设置正确,包括启用 JavaScript、DOM 存储等,以支持现代网页的加载需求。 ```java WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); // 启用 JavaScript 支持 webSettings.setDomStorageEnabled(true); // 启用 DOM 存储 webSettings.setLoadWithOverviewMode(true); webSettings.setUseWideViewPort(true); ``` ### 4. Electron 平台的解决方案 在 Electron 应用中,可以通过添加 Chromium 的命令行开关来解决 WebView 加载 HTTPS 页面时的白屏问题。这种方式可以绕过某些安全限制,但也存在一定的风险。 ```javascript const { app, BrowserWindow } = require('electron'); app.commandLine.appendSwitch('ignore-certificate-errors'); // 忽略证书错误 [^2] ``` ### 5. 调试与日志分析 通过调试工具(如 Chrome DevTools)或日志输出,检查 WebView 是否成功加载了目标 URL,是否存在重定向、证书错误或网络请求失败等问题。确保前后端逻辑一致,避免因 URL 拦截或重定向导致页面空白。 ### 6. 安全建议 虽然忽略 SSL 证书错误可以快速解决问题,但在生产环境中应尽量避免这种方式。可以考虑以下替代方案: - 使用受信任的 CA 签发的证书- 在服务器端配置完整的证书链。 - 使用 HTTPS 中间证书进行桥接。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值