https://developer.apple.com/videos/wwdc/2015/?id=711 @ 5:55
我似乎无法将其添加到我的info.plist中。没有任何价值。我正在运行XCode版本7.0 beta(7A121l),并在iOS9上进行测试。
由于无法明确声明视频中想要的URL,因此我不断收到“应用传输安全性阻止了明文HTTP(http://)资源加载,因为它不安全。可以通过应用的配置临时异常Info.plist文件”错误。
但是,我似乎无法配置它。有任何想法吗?
https://developer.apple.com/videos/wwdc/2015/?id=711 @ 5:55
我似乎无法将其添加到我的info.plist中。没有任何价值。我正在运行XCode版本7.0 beta(7A121l),并在iOS9上进行测试。
由于无法明确声明视频中想要的URL,因此我不断收到“应用传输安全性阻止了明文HTTP(http://)资源加载,因为它不安全。可以通过应用的配置临时异常Info.plist文件”错误。
但是,我似乎无法配置它。有任何想法吗?
Answers:
试试这个---在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>
但是完全不建议这样做。服务器应具有SSL证书,因此不会出现隐私泄漏。
<key>NSAllowsArbitraryLoads</key> <true/><key>NSExceptionDomains</key>
否则对我来说由于某种原因它不适用于发行版
您只需在info.plist文件的NSAppTransportSecurity词典中将NSAllowsArbitraryLoads键添加到YES。
例如,
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
那对我不起作用,但这确实成功了:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key><true/>
</dict>
<true/>
不是<YES/>
</dict>
和</plist>
标签括起来:
Xcode 8.2,iOS 10
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
更新答案(在2016年wwdc之后):
IOS apps will require secure HTTPS connections by the end of 2016
App Transport Security或ATS是Apple在iOS 9中引入的功能。启用ATS时,它将强制应用程序通过HTTPS连接而非非安全的HTTP连接到Web服务。
但是,开发人员仍可以关闭ATS,并允许其应用通过HTTP连接发送数据,如上面的答案所述。在2016年底,Apple将对所有希望将其应用程序提交到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
为了进一步解释ParaSara的答案:App Transport安全性将成为强制性要求,尝试将其关闭可能会使您的应用被拒绝。
作为开发人员,如果您的网络代码不起作用,则可以关闭App Transport安全性,并且您想在解决任何问题之前继续进行其他开发。以五人一组为例,四个人可以继续从事其他工作,而一个人可以解决所有问题。如果遇到网络问题,并且要检查它们是否由App Transport安全性引起,则也可以关闭App Transport安全性作为调试工具。您一知道就应该立即将其重新打开。
您的解决方案 必须除非您使用不支持https的第三方服务器,否则将来使用是根本不使用http。如果您自己的服务器不支持https,则Apple会遇到问题。即使使用第三方服务器,我也不敢打赌苹果会接受它。
与服务器安全性的各种检查相同。在某些时候,Apple只接受合理的例外。
但大多数情况下,请考虑以下几点:您正在危害客户的隐私。那是我书中的一大禁忌。不要那样做 修正您的代码,不要寻求运行不安全代码的许可。
对于使用NSAppTransportSecurity的开发人员来说,这是一个坏消息。
UPDATE:
[Apple will require HTTPS connections for iOS apps by the end of 2016]