NSAllowsArbitraryLoads无效

Pab*_*emé 13 json http ios xcode7 swift2

我有一个可以从http域下载一些信息的应用程序.但是在Swift 2.0和Xcode 7更新之后,我的应用程序无法连接到服务器并下载json数据,我得到"App Transport Security已经阻止了一个明文HTTP(http://)资源加载,因为它不安全.可以通过应用程序的Info.plist文件配置临时例外." 错误.

我试过把这些行放在我的info.plist中:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
Run Code Online (Sandbox Code Playgroud)

但我得到同样的错误,它不起作用.我总是从下载方法中获取nil数据.任何人都有同样的错误?谢谢!

编辑:这是我的info.plist文件中的图片:

Info.plist文件

Pab*_*emé 16

我觉得很蠢.我在错误的Info.plist上添加了禁用ATS的密钥.我将其添加到MyAppTests/Supporting Files/Info.plist文件中,而不是将其添加到Supporting Files/Info.plist文件中.不是Xcode中的错误,而是我大脑中的错误.谢谢大家的答案!


sim*_*ode 11

你可以尝试使用

nscurl --ats-diagnostics <your-URL>
Run Code Online (Sandbox Code Playgroud)

在终端.这可以帮助您找到允许您的应用连接到您的网址的设置.这仅适用于OSX El Capitan.查看apple 技术说明.

但是,如果您在info.plist文件中尝试过NSArbitraryLoads,则此诊断工具可能无法帮助您.我想你可能发现了一个bug.


小智 6

我遇到了同样的问题,我尝试添加NSExceptionMinimumTLSVersion并且它有效。

<key>NSAppTransportSecurity</key>
<dict>
   <key>NSExceptionMinimumTLSVersion</key>
   <string>TLSv1.0</string>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
Run Code Online (Sandbox Code Playgroud)

我不知道为什么这有帮助,但是......它确实有帮助!我希望它对那里的人也有帮助