返回

iOS wkWebView 拒绝加载不受信任的 HTTPS 请求的解决办法

IOS

正文

问题

在 iOS 中使用 WkWebView 加载不受信任的 HTTPS 请求时,可能会遇到以下问题:

  • 网页无法正常显示
  • 网页内的 HTTPS 图片无法正常显示
  • 控制台出现错误信息:WKNavigationDelegate - didFailProvisionalNavigation

解决办法

要解决这些问题,可以尝试以下方法:

  1. 在 plist 文件中将 Allow Arbitrary Loads in Web Content 置为 YES

    打开项目的 plist 文件,找到 Allow Arbitrary Loads in Web Content 项,将其值改为 YES

  2. 安装不受信任的证书。

    如果网站使用的是自签名的 SSL 证书,则需要将该证书安装到设备上。

  3. 使用 WKWebView 的 loadHTMLString 方法加载网页。

    可以使用 loadHTMLString 方法将网页的 HTML 代码直接加载到 WkWebView 中,这样就不需要进行 HTTPS 请求。

  4. 使用 WKWebView 的 loadRequest 方法加载网页,并设置 allowsInsecureWebContentYES

    可以使用 loadRequest 方法加载网页,并在请求对象中设置 allowsInsecureWebContentYES

  5. 使用 WKWebView 的 configuration.setURLSchemeAllowedForRequest 方法允许加载不受信任的 HTTPS 请求。

    可以使用 configuration.setURLSchemeAllowedForRequest 方法允许 WkWebView 加载不受信任的 HTTPS 请求。

注意

  • 在生产环境中,不建议使用 Allow Arbitrary Loads in Web Content 选项,因为这可能会导致安全问题。
  • 在生产环境中,也不建议安装不受信任的证书,因为这可能会导致安全问题。

结论

在 iOS 中使用 WkWebView 加载不受信任的 HTTPS 请求时,可能会遇到一些问题。可以通过修改 plist 文件、安装不受信任的证书、使用 loadHTMLString 方法、使用 loadRequest 方法并设置 allowsInsecureWebContentYES、使用 configuration.setURLSchemeAllowedForRequest 方法等方法来解决这些问题。