WKWebView http - >适用于iOS 10 ATS合规性的https重定向

时间:2016-12-28 09:45:07

标签: ios10 wkwebview app-transport-security sfsafariviewcontroller

iOS 10已经将https强加给我们,完全破坏了我正在开发的应用程序。该应用程序部分是RSS阅读器。我们从RSS源获取的URL通常是HTTP URL,包括站点和元数据图像。这些http网址在safari和SFSafariViewController中可用时被重定向到https版本。但是,使用WKWebView时,不会发生此重定向。操作系统完全阻止非https加载。如果我试图通过在URL中交换“https”的“http”来破解这个问题,那么当网站从http CDN加载他们的图像,CSS和JavaScript时,这些网站通常会被破坏,这些请求也会被阻止。如何在Safari中看到WKWebView中的相同行为?我可以设置配置吗?对我来说,Apple会做出这样的改变并且只是使用WKWebView打破客户端,这似乎很疯狂。

P.S。 Facebook能够以某种方式解决这个问题。我不知道它是否是一个被严重攻击的SFSafariViewController,或者他们以某种方式使Web视图工作。有谁知道他们是如何完成这个的?

4 个答案:

答案 0 :(得分:3)

使用NSAllowsArbitraryLoads。密钥仍然可以使用; Apple只是想确保你有充分的理由使用它。在应用程序中显示外部内容符合条件。一旦Apple ATS规则生效,您需要提供解释为什么需要它,以及为什么NSAllowsArbitraryLoadsInWebContent是不够的。既然您已经有了答案,那么使用NSAllowsArbitraryLoads让您的应用程序通过审核流程应该没有问题。

请注意,Apple has postponed ATS requirement将于2017年1月生效。

答案 1 :(得分:0)

在Apple的文档中挖掘here之后,我找到了新的NSAllowsArbitraryLoadsInWebContent密钥。这解决了WKWebView的问题,但令人沮丧的是通过http获取图像仍然存在问题。我可能最终不得不通过自己的服务器代理它们。

答案 2 :(得分:0)

虽然您可以简单地使用NSAllowsArbitraryLoads'为了全球关闭运输安全,这并不理想,并且更有可能被苹果公司拒绝而没有真正坚实的理由。

在iOS 9和iOS 10中提供正确行为的更好的解决方案是将NSAllowsArbitraryLoadsNSAllowsArbitraryLoadsInWebContent放在info.plist中。由于iOS 9不承认NSAllowsArbitraryLoadsInWebContent,因此它会尊重NSAllowsArbitraryLoads,从而有效地关闭iOS 9设备中适用于您应用的传输安全性。

在iOS 10中,如果您添加NSAllowsArbitraryLoadsInWebContent'key,iOS将忽略NSAllowsArbitraryLoads设置,仅在应用中的网络视图中停用应用传输安全性。这意味着您的应用在iOS 10中更加安全,我认为除了您使用应用传输安全例外的理由外,苹果更有可能使用苹果

答案 3 :(得分:0)

编辑:我的以下答案不正确。它不适用于返回XSL的站点,例如feedburner上托管的RSS源。我无法找到解决方案,所以不幸的是我要回到启用任意负载。

我们的应用程序还具有通用的RSS阅读器功能。我们希望使用ATS以提高安全性并符合Apple的要求。此外,许多企业客户认为禁用它是一种高风险。因此,启用"允许任意负载"对我们来说不是一个有效的选择。

目前,我们通过做两件事来充分利用这一点: 1.启用Allow Arbitrary Loads in Web Content。我们还有一个显示客户内容的通用webview。 2.使用不可见的WKWebView加载RSS提要,然后从网页中提取HTML并解析XML。我已为here

创建了一个要点

不知怎的,这个可怕的黑客现在似乎适合我们的目的。

拥有一个允许您在URL会话级别覆盖传输安全性的解决方案会很棒。