How can I add NSAppTransportSecurity to my info.plist file?

https://developer.apple.com/videos/wwdc/2015/?id=711 @5:55

I can't seem to be able to add this to my info.plist. There is no value it. I'm running XCode Version 7.0 beta (7A121l), and testing on iOS9.

Because I can't specifically declare what URL's I want as seen in the video, I keep getting "App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file" errors.

However, I don't seem to be able to configure it. Any ideas?

207820 次浏览

试试这个——-在 Xcode-beta 47.0中对我很管用

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

还有一个选项,如果你想禁用 ATS,你可以使用:

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

但是这根本不被推荐。服务器应该有 SSL 证书,这样就不会有隐私泄漏。

这招对我不管用,但这招奏效了:

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

澄清一下。 应该始终使用 httpS

但是您可以绕过它添加异常:

enter image description here

您只需在 info.plist 文件中的 NSAppTransportation Security 字典中将 NSAllowsArbitaryLoads 键添加到 YES。

比如说,

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

enter image description here

<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>com</key>
<dict>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>net</key>
<dict>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>org</key>
<dict>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>

这将允许连接到.com. net. org

更新答案(2016年以后) :

IOS apps will require secure HTTPS connections by the end of 2016

应用程序传输安全,简称 ATS,是苹果在 iOS9中引入的一项功能。当启用 ATS 时,它强制应用程序通过 HTTPS 连接而不是不安全的 HTTP 连接到 Web 服务。

但是,开发人员仍然可以关闭 ATS,并允许他们的应用程序通过 HTTP 连接发送数据,如上述答案所述。到2016年底,苹果将为所有希望向 App Store 提交应用程序的开发者制作 强制性苯丙胺类兴奋剂链接

关于 ParaSara 的回答,我们再来解释一下: 应用程序传输安全 威尔成为强制性的,试图关闭它可能会导致应用程序被拒绝。

作为一名开发人员,如果您的网络代码不能与应用程序传输一起工作,并且您希望在修复任何问题之前继续进行其他开发,那么您可以关闭应用程序传输安全性。比如说,在一个五人团队中,四个人可以继续做其他事情,而一个人可以解决所有的问题。如果您有网络问题,并且希望检查它们是否是由应用程序传输安全性引起的,则还可以将应用程序传输安全性作为调试工具关闭。一旦你知道你应该立即再次打开它。

必须的将来使用的解决方案是根本不使用 http,除非使用不支持 https 的第三方服务器。如果您自己的服务器不支持 https,那么苹果公司就会遇到问题。即使有第三方服务器,我也不敢打赌苹果会接受它。

对服务器安全的各种检查也是如此,在某种程度上,苹果只会接受合理的例外。

但最重要的是,考虑到这一点: 你正在危及你客户的隐私。这在我的字典里是绝对不行的。别这样。修复代码,不要请求运行不安全代码的权限。

对于使用 NSAppTransportation 安全性的开发人员来说,这是一个坏消息。

UPDATE:
[Apple will require HTTPS connections for iOS apps by the end of 2016]

Https://techcrunch.com/2016/06/14/apple-will-require-https-connections-for-ios-apps-by-the-end-of-2016/

<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>uservoice.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>

Xcode 8.2 iOS 10

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

在 mac shell 命令行 中,使用以下命令:

plutil -insert NSAppTransportSecurity -xml "<array><string> hidden </string></array>" [location of your xcode project]/Info.plist

该命令将把所有必需的值添加到 plist 文件中。

XCODE 8,Swift 3: 您需要添加一行: * *

“应用程序传输安全设置”

* * 在 info.plist inside information Property 列表中。

使用您喜欢的任何编辑器打开项目的 info.plist 文件,然后在文件末尾的最后一个之前添加这段代码

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