我目前正在开发一个同时使用HTTPS端点和HTTP端点的应用程序。现在我想通过在plist中创建一个NSExceptionDomains
字典来符合iOS9的应用程序传输安全性,但是我的应用程序命中的第三方端点的数量是动态的并且总是在增长,所以这样做将是一项相当繁琐的任务。
因此,虽然我可以将NSAllowsArbitraryLoads
设置为YES
,但我宁愿默认关闭ATS,除了少数几个安全的HTTPS端点。是否有可能做到这一点?我看到一篇关于某人以这种方式配置plist的博文。
但我找不到任何确认这是有效解决方案的信息,也不知道如何知道HTTPS请求是否正在使用ATS。有谁知道这是否可行或如何知道这是否有效?
修改
值得一提的是,当前应用文档中的标签不正确。
NSExceptionAllowInsecureHTTPLoads
NSExceptionRequiresForwardSecrecy
NSExceptionMinimumTLSVersion
NSThirdPartyExceptionAllowsInsecureHTTPLoads
NSThirdPartyExceptionMinimumTLSVersion
NSThirdPartyExceptionRequiresForwardSecrecy
实际上是
NSTemporaryExceptionAllowsInsecureHTTPLoads
NSTemporaryExceptionRequiresForwardSecrecy
NSTemporaryExceptionMinimumTLSVersion
NSTemporaryThirdPartyExceptionAllowsInsecureHTTPLoads
NSTemporaryThirdPartyExceptionMinimumTLSVersion
NSTemporaryThirdPartyExceptionRequiresForwardSecrecy
答案 0 :(得分:4)
在做了一些研究之后,我能够回答我自己的问题。所以基本上你说通过设置NSAllowsArbitraryLoads
= YES,一切都需要默认为不使用ATS。
但是在您的例外字典(NSExceptionDomain
)中,您指定了要采取不同行为的端点。这意味着您可以将HTTPS端点放在此列表中,并通过将NSTemporaryExceptionAllowsInsecureHTTPSLoads
设置为NO
来指定它以使用ATS。我能够通过放置一个不安全的端点itunes.apple.com
并尝试访问它来验证这一点。当我将NSTemporaryExceptionAllowsInsecureHTTPSLoads
设置为NO
时,它失败并抱怨它不安全。
这对大多数人来说可能是显而易见的,但是那里的文档很少,我希望这会有所帮助。