我有一个工作的反应-本机应用程序相当几个月与WebView直接指向一个HTTPS网站。这一切都很好,但是突然之间,WebView开始返回一个空白页面,而不是HTTPS站点。
通过调试,我发现:
在我的设备中,似乎有些东西阻塞了WebViews中的一些网站,可能是设置,或者是应用程序。会是什么?
我使用LG G4,在19和23上试用。
发布于 2017-12-13 09:54:38
这必须是由于开发模式中的私有SSL错误所致。如果您将在调试模式中看到控制台日志,那么您可以看到一行代码为Failed to validate the certificate chain, error: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.。
如果是,那么只需添加一个新的道具,这在文档中的任何地方都没有提到。支柱是ignoreSslError={true},这将迫使WebView加载网站,尽管存在SSL错误。
前<WebView ignoreSslError={true} source={{uri: 'https://www.google.com'}} />
发布于 2019-08-14 17:39:39
这就是对我有用的东西。
对我来说,很明显我的证书是不可信的。在我的例子中,这个问题可以通过在配置错误的服务器本身上添加丢失的中间证书来解决。不幸的是,由于我没有所需的访问权限,我决定看看是否有可能实现一个解决方案。
以下是详细信息:
以下是文件的内容:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config>
<domain includeSubdomains="true">example.com</domain>
<trust-anchors>
<certificates src="@raw/my_ca"/>
</trust-anchors>
</domain-config>
</network-security-config>我在上面的代码示例中替换了"example.com“,我的问题域。
在Mac上的Chrome中,单击域旁边的锁图标,然后在“证书”上将证书图标拖到本地目录中。这将传输一个DER编码的二进制文件。
在Windows上的Chrome中,您单击域旁边的锁图标,然后单击“证书”,然后单击“详细信息”选项卡,最后单击右下角的“复制到文件”。导出时选择DER版本。
检查它是否带有凹版。
openssl version如果失败,您可以在Mac上安装
brew install openssl用于Windows的说明如下:https://slproweb.com/products/Win32OpenSSL.html
openssl x509 -in downloaded_cert.cer -inform DER -out my_ca.pem -outform PEM<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:networkSecurityConfig="@xml/network_security_config"
... >
...
</application>
</manifest>发布于 2019-08-20 15:19:49
哦,是的,它运行得很成功。
<View style={{ height: 150, width: 150,overflow:'hidden' }}>
<WebView
source={{ uri: 'https://github.com/facebook/react-native' }}
scalesPageToFit={true}
/>
</View>https://stackoverflow.com/questions/43993584
复制相似问题