根据以下错误消息,我需要在info.plist中设置什么来启用HTTP模式?
传输安全性已阻止明文HTTP(HTTP://)资源因为它是不安全的。可以通过以下方式配置临时异常应用程序的Info.plist文件。
假设我的域名是example.com。
根据以下错误消息,我需要在info.plist中设置什么来启用HTTP模式?
传输安全性已阻止明文HTTP(HTTP://)资源因为它是不安全的。可以通过以下方式配置临时异常应用程序的Info.plist文件。
假设我的域名是example.com。
当前回答
这是在plist中添加此项的快速解决方法(但不推荐):
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
这意味着(根据苹果的文档):
NSallows轨道荷载用于为NSExceptionDomains字典中未列出的任何域禁用应用程序传输安全性的布尔值。列出的域使用为该域指定的设置。默认值NO要求所有连接的默认应用程序传输安全行为。
我真的推荐链接:
苹果的技术说明WWDC 2015第706届会议(安全和应用程序)于1:50左右开始WWDC 2015第711届会议(与NSURLSession建立网络)博客文章用应用程序传输安全运送应用程序
这有助于我理解原因和所有含义。
下面的XML(在Info.plist文件中)将:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<false/>
<key>NSExceptionDomains</key>
<dict>
<key>PAGE_FOR_WHICH_SETTINGS_YOU_WANT_TO_OVERRIDE</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
不允许对所有页面进行任意调用,但PAGE_for_WHICH_SETTING_YOU_WANT_TO_OVERRIDE将允许连接使用HTTP协议。
在上面的XML中,您可以添加:
<key>NSIncludesSubdomains</key>
<true/>
如果要允许指定地址的子域进行不安全的连接。
最好的方法是阻止所有任意的加载(设置为false),并添加例外以仅允许我们知道的地址正常。
感兴趣的读者
2018年更新:
苹果不建议关闭此功能-更多信息可在2018年WWDC 207会议中找到,并对安全方面的更多内容进行了解释
由于历史原因和发展阶段,保留原始答案
其他回答
2015-09-25(2015-09-18 Xcode更新后):
我用了一种非懒惰的方法,但没有奏效。以下是我的尝试。
第一
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>www.xxx.yyy.zzz</key>
<dict>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
其次,
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>www.xxx.yyy.zzz</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
最后,我使用了懒惰的方法:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
这可能有点不安全,但我找不到其他解决方案。
我不喜欢直接编辑plist。您可以使用GUI轻松地将其添加到plist:
单击左侧导航器中的Info.plist。现在更改主区域中的数据:在最后一行添加+输入组的名称:应用程序传输安全设置右键单击组并选择“添加行”输入允许任意加载将右侧的值设置为YES
使用NSAppTransportSecurity:
您必须在info.plist文件中的NSAppsTransportSecurity字典下将NSAllowsArbitraryLoads键设置为YES。
这是在iOS 9 GM种子上进行测试和工作的-这是允许特定域使用HTTP而不是HTTPS的配置:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<false/>
<key>NSExceptionDomains</key>
<dict>
<key>example.com</key> <!--Include your domain at this line -->
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
</dict>
</dict>
NSAllowsArbitraryLoads必须为false,因为它不允许所有不安全的连接,但例外列表允许连接到一些没有HTTPS的域。
这里是直观的:
**终于!!!已解决的应用程序传输安全**
1. Follow the follow the screen shot. Do it in Targets info Section.