HTTP加载失败(kCFStreamErrorDomainSSL,-9806(IOS9)

时间:2015-07-06 21:21:57

标签: swift info.plist xcode7 ios9

我在iOS 9上运行app时,在模拟器上运行应用程序时,NSURLSession / NSURLConnection HTTP加载失败。 以下是我的info.plist文件的样子

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
        <key>NSIncludesSubdomains</key>
        <true/>
        <!--Include to allow insecure HTTP requests-->
        <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
        <true/>
        <!--Include to specify minimum TLS version-->
        <key>NSTemporaryExceptionMinimumTLSVersion</key>
        <string>TLSv1.1</string>
    </dict>

即使输入这些键值,Xcode控制台上也会显示相同的错误。请协助。

这是 info.plist

的屏幕截图

enter image description here

非常感谢!

1 个答案:

答案 0 :(得分:3)

您需要定义要应用这些规则的网址。 您可以在Apple的文档页面上找到正确的声明: https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/

所以基本上你的Info.plist看起来应该是这样的并包含域名。

注意:为了获得更好的透明度,我还将NSAllowsArbitraryLoads的默认值重新声明为false

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <false/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>yourdomain.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSAllowsArbitraryLoads</key>
            <true/>
            <key>NSTemporaryExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>
</dict>

最好的问候。

如果你只是不关心所有这些麻烦(我不推荐这个)并且只想调试你的UI,你可以选择暂时使用非默认的App TransportSecurity和只允许任何事情:

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

我不确定,Apple是否会在AppStore Review中传递此内容; - )