NSAllowsArbitraryLoads无法正常工作

我有一个工作的应用程序,从http域下载一些信息。 但是在Swift 2.0和Xcode 7更新之后,我的应用程序无法连接到服务器并下载json数据,因为它是不安全的,所以我得到了“应用程序传输安全性阻止了明文HTTP(http://)资源加载。临时的exception可以通过你的应用程序的Info.plist文件来configuration。 错误。

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

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

但是我得到了同样的错误,它不工作。 我总是从下载方法得到零数据。 任何人都有这个相同的错误? 谢谢!

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

Info.plist文件

我觉得很愚蠢 我在错误的Info.plist上添加了禁用ATS的按键。 我没有将它添加到支持文件/ Info.plist文件中,而是将它添加到MyAppTests / Supporting Files / Info.plist文件中。 Xcode中并不是一个错误,而是我脑中的一个bug。 谢谢大家的答案!

你可以尝试使用

 nscurl --ats-diagnostics <your-URL> 

在terminal。 这可以帮助您find允许您的应用连接到您的url的设置。 这只适用于OSX El Capitan。 看看苹果技术 。

但是,如果您已经在您的info.plist文件中尝试了NSArbitraryLoads,则此诊断工具可能无法帮助您。 我想你可能find了一个错误。

我有同样的问题,我试着添加NSExceptionMinimumTLSVersion ,它的工作原理。

 <key>NSAppTransportSecurity</key> <dict> <key>NSExceptionMinimumTLSVersion</key> <string>TLSv1.0</string> <key>NSAllowsArbitraryLoads</key> <true/> </dict> 

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

以前的解决scheme都没有为我工作,我有NSAllowsArbitraryLoads设置为true,但仍然HTP不会工作,环顾四周后我注意到info.plist文件有NSExceptionDomains部分,所以我删除它进行testing,一切正常。

所以看来有NSExceptionDomains取消NSAllowsArbitraryLoads,希望这是有帮助的。

在我的情况下,我需要删除所有其他键,如“允许任意加载在Web内容”或“例外域”,以便“允许任意加载”工作,因为它设置为“信息中的应用程序传输安全设置”的.plist。

使用XCode 8.2.1,iOS 10.2进行testing。

你有没有尝试添加你的域名? 您应该将其添加到NSAppTransportSecurity字典中。

 <key>NSExceptionDomains</key> <dict> <key>abcde.com</key> <dict> <key>NSExceptionRequiresForwardSecrecy</key> <true/> <key>NSIncludesSubdomains</key> <true/> <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> <true/> </dict> </dict> 

我有一个类似的问题,过了一段时间,我发现info.plist文件已损坏。 我只能build议直接检查xml,而不是xcode中的plist编辑器。

如果你只需要在web(UIWebView / WKWebView / SafariViewController)中加载一个http://资源,那么以下就足够了。

 <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoadsInWebContent</key> <true/> </dict> 

我在Xcode 8.3.2(8E2002)和iOS 10.3中遇到同样的问题。 删除“允许任意加载Web内容”或“例外域”之类的所有键后,“允许任意加载”键按预期工作。 谢谢@dariukas。