iOS wkWebView 拒绝加载不受信任的 HTTPS 请求的解决办法
2023-10-25 15:43:42
正文
问题
在 iOS 中使用 WkWebView 加载不受信任的 HTTPS 请求时,可能会遇到以下问题:
- 网页无法正常显示
- 网页内的 HTTPS 图片无法正常显示
- 控制台出现错误信息:
WKNavigationDelegate
-didFailProvisionalNavigation
解决办法
要解决这些问题,可以尝试以下方法:
-
在 plist 文件中将
Allow Arbitrary Loads in Web Content
置为YES
。打开项目的 plist 文件,找到
Allow Arbitrary Loads in Web Content
项,将其值改为YES
。 -
安装不受信任的证书。
如果网站使用的是自签名的 SSL 证书,则需要将该证书安装到设备上。
-
使用 WKWebView 的
loadHTMLString
方法加载网页。可以使用
loadHTMLString
方法将网页的 HTML 代码直接加载到 WkWebView 中,这样就不需要进行 HTTPS 请求。 -
使用 WKWebView 的
loadRequest
方法加载网页,并设置allowsInsecureWebContent
为YES
。可以使用
loadRequest
方法加载网页,并在请求对象中设置allowsInsecureWebContent
为YES
。 -
使用 WKWebView 的
configuration.setURLSchemeAllowedForRequest
方法允许加载不受信任的 HTTPS 请求。可以使用
configuration.setURLSchemeAllowedForRequest
方法允许 WkWebView 加载不受信任的 HTTPS 请求。
注意
- 在生产环境中,不建议使用
Allow Arbitrary Loads in Web Content
选项,因为这可能会导致安全问题。 - 在生产环境中,也不建议安装不受信任的证书,因为这可能会导致安全问题。
结论
在 iOS 中使用 WkWebView 加载不受信任的 HTTPS 请求时,可能会遇到一些问题。可以通过修改 plist 文件、安装不受信任的证书、使用 loadHTMLString
方法、使用 loadRequest
方法并设置 allowsInsecureWebContent
为 YES
、使用 configuration.setURLSchemeAllowedForRequest
方法等方法来解决这些问题。