WKWebView如何显示到http:网页的链接

我有一个WKWebView ,它将使用在线收集的链接显示用户的网页。 有时这些链接是http:它们被ATS阻止。 我试着简单地将链接改为https:这有时候起作用。

但是,经常出现错误“发生SSL错误,无法与服务器build立安全连接”。

有时候,页面只是redirect到http: :,再次被阻塞。 其他时候, https:页面只是“未find”。 删除http:仅导致"Unsupported URL"错误。

有没有办法让WKWebView显示这些页面?

请不要提示NSAllowsArbitraryLoads ,甚至每个域的例外(事先不知道域名是什么),页面加载完美的Safari,甚至移动Safari,所以它必须是可能的。

所以,简短的答案是NSAllowsArbitraryLoadsInWebContent ,这将在iOS 10中运行良好。但是,如果您尝试在iOS 9设备上的Info.plist中运行它,则无法工作。

如果你想在iOS 9和iOS 10上运行,苹果推荐你做的是把NSAllowsArbitraryLoads NSAllowsArbitraryLoadsInWebContent放到你的Info.plist中。

在iOS 9中,由于它不能识别NSAllowsArbitraryLoadsInWebContent条目,它将允许应用程序中的所有http内容(包括您的WKWebview)。 这并不理想,但只要你确保你在其他地方的关键连接是安全的,苹果执行它确实没有太大的作用。

在iOS 10(大多数用户应该正在运行)中,如果iOS也会看到NSAllowsArbitraryLoadsInWebContent则会忽略NSAllowsArbitraryLoadsInWebContent 。 这意味着其他应用程序networking通信将需要遵循ATS的安全要求,而WKWebView和UIWebView则不需要。 这不是一个很好的解决scheme,但是当你需要同时支持iOS 9和10时,它是Apple工程师推荐的。

请注意,当苹果确实开始要求ATSexception的理由时, NSAllowsArbitraryLoadsInWebContent条目是触发需要alignment的一个条目。 但是,比NSAllowsArbitraryLoads本身好,你可以把它放在你的理由,它应该被苹果接受。