我正在开发一个应用程序,其中有一个小调整。它将显示给定网址的预览(如Facebook,whatsapp确实)。但如果“用户自定义”网址在HTTP中,则无法在打开ATS时加载预览。所以我使用 NSAllowsArbitraryLoads 关闭了整个HTTPS流量。有没有办法允许http启用ATS?
答案 0 :(得分:0)
您可以添加例外(NSExceptionDomains
)以允许特定域的HTTP。请参阅documentation。
但是,如果用户指定的网址可以是任何网址,那么除了使用NSAllowsArbitraryLoads
之外别无他法。
答案 1 :(得分:0)
打开Info.plist
作为源代码,然后将其添加到您想要的位置:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<false/>
<key>NSExceptionDomains</key>
<dict>
<key>aWebsite.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
<key>anotherWebsiteIfYouWant.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
</dict>
</dict>
这样您就不必完全禁用ATS了。
答案 2 :(得分:0)
According to Apple,如果您针对较旧的SDK构建,那么iOS 8或更早版本,则禁用ATS。我不确切地知道这意味着什么,但我猜它是目标构建设置架构,基础SDK - 而不是部署目标设置。
This video详细介绍了最近在2016年WWDC上宣布的ATS变化。截至2017年初,如果您使用以下任何ATS例外,Apple将拒绝您的应用 AND 你无法提供合理的理由:
但是,您似乎将允许使用名为的新异常:
这意味着 WKWebView控件仍然可以加载HTTP内容。不确定这是否也适用于UIWebView。
在你的情况下,我猜你没有使用WKWebView,所以你最好开始研究你的“合理理由”。或坚持使用iOS 8 SDK。