iOS 9和iOS 10中的App Transport Security问题

时间:2016-10-27 09:27:26

标签: ios

Apple宣布NSAllowArbitraryLoads不会很快发布。因此,在iOS 10中,我在info.plist中有这个:

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>myAPIdomain</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSExceptionAllowsInsecureHTTPLoads</key>
                <true/>
            </dict>
        </dict>
        <key>NSAllowsArbitraryLoadsInWebContent</key>
        <true/>
    </dict>

这适用于我在UIWebView中的API请求和内容。但是,在iOS9中,不支持NSAllowsArbitraryLoadsInWebContent,建议在iOS 9支持中包含NSAllowsArbitraryLoads。但我认为这会覆盖我的NSExceptionDomains设置?如何对我的API和UIWebView的HTTP请求在iOS 9和iOS 10上工作并仍然遵循Apple的规则?

修改

支持iOS 9和iOS 10:

<key>NSAppTransportSecurity</key>
        <dict>
            <key>NSExceptionDomains</key>
            <dict>
                <key>myAPIdomain</key>
                <dict>
                    <key>NSIncludesSubdomains</key>
                    <true/>
                    <key>NSExceptionAllowsInsecureHTTPLoads</key>
                    <true/>
                </dict>
            </dict>
            <key>NSAllowsArbitraryLoadsInWebContent</key>
            <true/>
            <key>NSAllowsArbitraryLoads</key>
            <true/>
        </dict>

1 个答案:

答案 0 :(得分:1)

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>

如果您不想支持https(TLS 1.2),则可以使用上述条件。但你必须确保它将是一个临时修复。从2017年初开始,Apple将https(TLS 1.2)作为强制性