允许HTTP而不在iOS中禁用ATS

时间:2016-06-28 05:49:09

标签: ios facebook app-transport-security

我正在开发一个应用程序,其中有一个小调整。它将显示给定网址的预览(如Facebook,whatsapp确实)。但如果“用户自定义”网址在HTTP中,则无法在打开ATS时加载预览。所以我使用 NSAllowsArbitraryLoads 关闭了整个HTTPS流量。有没有办法允许http启用ATS?

3 个答案:

答案 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 你无法提供合理的理由:

  • NSAllowsArbitraryLoads
  • NSExceptionAllowsInsecureHTTPLoads
  • NSExceptionMinimumTLSVersion

但是,您似乎允许使用名为的新异常:

  • NSAllowsArbitraryLoadsInWebContent

这意味着 WKWebView控件仍然可以加载HTTP内容。不确定这是否也适用于UIWebView。

在你的情况下,我猜你没有使用WKWebView,所以你最好开始研究你的“合理理由”。或坚持使用iOS 8 SDK。