安卓 webview 如何访问不带ssl证书的http和webSocket 的接口?
新版的安卓不http 和 ws ,只支持https和wss。有没有办法绕过这个机制。
安卓 webview 如何访问不带ssl证书的http和webSocket 的接口?
新版的安卓不http 和 ws ,只支持https和wss。有没有办法绕过这个机制。
在Android开发中,出于安全考虑,WebView默认不允许加载非HTTPS的资源。从Android 9(Pie)开始,这一限制变得更加严格,WebView默认不支持加载HTTP内容。然而,在一些特定情况下,如果你确实需要加载HTTP内容或者与没有SSL证书的服务进行通信,你可以通过一些方法尝试绕过这些限制,但请注意,这可能会带来安全风险,并可能使你的应用不符合Google Play的政策或受到安全漏洞的影响。
你可以通过实现自定义的WebViewClient
并覆盖onReceivedSslError
方法来允许不安全的SSL证书。但是,对于HTTP请求,这种方法并不直接适用,因为HTTP请求不涉及SSL证书。
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
// 注意:在生产环境中,不推荐直接允许所有SSL错误
// 这里只是为了演示如何绕过SSL证书验证
handler.proceed();
}
});
对于HTTP请求,你可以通过修改应用的网络安全配置(network security configuration)来允许HTTP流量。在你的res/xml
目录下创建一个名为network_security_config.xml
的文件,并添加以下配置:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
</network-security-config>
然后,在你的AndroidManifest.xml
文件中,引用这个配置文件:
<application
android:networkSecurityConfig="@xml/network_security_config"
... >
...
</application>
虽然技术上可以通过上述方法绕过Android WebView的SSL和HTTP限制,但强烈建议仅在完全了解这些做法的安全风险和政策影响的情况下才使用它们。在可能的情况下,最好更新你的服务以使用HTTPS和WSS,以确保通信的安全性和应用的合规性。
1 回答1.9k 阅读✓ 已解决
1 回答1.5k 阅读✓ 已解决
2 回答1.4k 阅读
2 回答1k 阅读
1 回答609 阅读