iOS9:应用程序传输安全 plist 配置

iOS 9: Application Transport Security plist configurations

我目前正在开发一个同时使用 HTTPS 端点和 HTTP 端点的应用程序。现在我想通过在 plist 中创建一个 NSExceptionDomains 字典来符合 iOS9 的应用程序传输安全性,但是我的应用程序命中的第 3 方端点的数量是动态的并且总是在增长所以这样做将是一个相当繁琐的任务。

因此,虽然我可以将 NSAllowsArbitraryLoads 设置为 YES,但我宁愿默认关闭 ATS,但我的少数安全 HTTPS 端点除外。是否有可能做到这一点?我看到一篇博客 post 关于有人用这种方式配置 plist。

但我找不到任何信息来验证这是一个有效的解决方案,我也不知道如何知道 HTTPS 请求是否正在使用 ATS。有谁知道这是否可行或如何知道这是否有效?

编辑

值得一提的是,当前应用文档中的标签不正确。

NSExceptionAllowInsecureHTTPLoads NSExceptionRequiresForwardSecrecy NSExceptionMinimumTLSVersion NSThirdPartyExceptionAllowsInsecureHTTPLoads NSThirdPartyExceptionMinimumTLSVersion NSThirdPartyExceptionRequiresForwardSecrecy

实际上是

NSTemporaryExceptionAllowsInsecureHTTPLoads NSTemporaryExceptionRequiresForwardSecrecy NSTemporaryExceptionMinimumTLSVersion NSTemporaryThirdPartyExceptionAllowsInsecureHTTPLoads NSTemporaryThirdPartyExceptionMinimumTLSVersion NSTemporaryThirdPartyExceptionRequiresForwardSecrecy

在做了更多研究之后,我能够回答我自己的问题。所以基本上你是说一切都需要通过设置 NSAllowsArbitraryLoads = YES 来默认不使用 ATS。

但是随后在您的异常字典 (NSExceptionDomain) 中您指定了您想要以不同方式操作的端点。因此,这意味着您可以将您的 HTTPS 端点放入此列表中,并通过将 NSTemporaryExceptionAllowsInsecureHTTPSLoads 设置为 NO 来指定它使用 ATS。我能够通过放置一个不安全的端点 itunes.apple.com 并尝试访问它来验证这一点。当我将 NSTemporaryExceptionAllowsInsecureHTTPSLoads 设置为 NO 时,它失败了并抱怨它不安全。

这对大多数人来说可能是显而易见的,但由于那里的文档很少,我希望这对您有所帮助。