我如何添加NSAppTransportSecurity到我的info.plist文件?

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

我似乎无法将此添加到我的info.plist。 没有价值。 我正在运行XCode V7.0 beta(7A121l),并在iOS9上进行testing。

因为我不能明确地声明video中显示的是什么URL,所以我总是收到“应用程序传输安全性阻止明文HTTP(http://)资源加载,因为它是不安全的。临时的exception可以通过您的应用程序Info.plist文件“错误。

但是,我似乎无法configuration它。 有任何想法吗?

尝试用这个—在Xcode-beta 4 7.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> 

但是这不是build议。 服务器应该有SSL证书,所以没有隐私泄漏。

您必须在您的info.plist文件的NSAppTransportSecurity字典中仅将NSAllowsArbitraryLoads键添加到YES。

例如,

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

在这里输入图像描述

这不是为我工作,但这个伎俩:

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

只是为了澄清…你应该总是使用httpS

但是你可以绕过它添加exception:

在这里输入图像描述

Xcode 8.2,iOS 10

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

更新回答(wwdc 2016之后):

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

应用程序传输安全性或ATS是Apple在iOS 9中引入的一项function。启用ATS后,它会强制应用程序通过HTTPS连接而不是非安全HTTP连接到Web服务。

但是,开发人员仍然可以切换ATS,并允许他们的应用程序通过HTTP连接发送数据,如上面的答案中所述。 在2016年年底,苹果将使所有希望将应用程序提交到App Store的开发者强制使用ATS 。 链接

 <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

对于使用NSAppTransportSecurity的开发人员来说是一个坏消息。

 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/

要更多地解释ParaSara的答案:App Transport安全性成为强制性的,试图closures它可能会导致您的应用程序被拒绝。

作为开发人员,如果您的networking代码无法使用,则可以closuresApp Transport安全性,并且在解决任何问题之前要继续进行其他开发。 说一个五人小组,四个人可以继续在其他事情上工作,而一个人解决所有问题。 如果您有networking问题,并且想要检查它们是否由应用程序传输安全性引起,则也可以将App Transport安全性作为debugging工具closures。 只要你知道你应该马上再打开它。

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

与各种服务器安全检查一样。 在某些时候,苹果只会接受合理的例外。

但大多数情况下,请考虑这一点:您正在危害客户的隐私。 这在我的书里是一个很大的禁忌。 不要这样做。 修复你的代码,不要求运行不安全代码的权限。

 <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,Swift 3:你需要添加一行:**

“应用运输安全设置”

**在info.plist里面的信息属性列表中。

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

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

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