应用传输安全已阻止明文 HTTP 资源
Posted
技术标签:
【中文标题】应用传输安全已阻止明文 HTTP 资源【英文标题】:App Transport Security has blocked a cleartext HTTP resource 【发布时间】:2015-12-22 00:55:22 【问题描述】:我正在快速使用 Socket.IO 库,但我不断收到此错误:
App Transport Security 已阻止明文 HTTP (http://) 资源 加载,因为它不安全。可以通过以下方式配置临时异常 您应用的 Info.plist 文件。
当我尝试发送 http 请求时。我根据苹果官方文档将密钥添加到 plist 中,但没有帮助。
【问题讨论】:
Transport Security has Blocked a cleartext HTTP的可能重复 @william-kinaan 请不要在问题中添加不相关的标签。这个问题与 Swift 无关,而是与 ios 相关。谢谢。 【参考方案1】:你需要像这样更正它:
为方便起见,这是 info.plist 中的正确 xml
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>localhost</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
</dict>
</dict>
将localhost
更改为您的实际服务器
Check the table for NSAppTransportSecurity options
如果您想与任何域进行所有通信,您可以这样做:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
但是,您应该在开发阶段使用最新的。
【讨论】:
我做了同样的事情,现在我得到了这个:App Transport Security 阻止了明文 HTTP (http://) 资源加载,因为它不安全。可以通过应用程序的 Info.plist 文件配置临时例外。请帮忙.. 我对 XCode 完全陌生。我有 7.3,所以我看到相同的变量名称 except 他们在名称中没有 NS。所以这个解决方案对我有用!【参考方案2】:另一种我发现更方便的解决方法是默认使用NSAllowsArbitraryLoads
键禁用应用程序传输安全性。因此,您未包含在 NSExceptionDomains
字典中的任何域(或者如果您根本不包含 NSExceptionDomains
)将不受应用程序传输安全性的约束。
【讨论】:
每个人都给出了相同的答案,除了这个,唯一一个有效的!谢谢:) 我有 XCode 7.1.1,但找不到这个选项【参考方案3】:我在您的屏幕截图中看到了错误的键和拼写错误。这是一个工作示例:
【讨论】:
感谢您的修复!在添加 NSExceptionAllowsInsecureHTTPLoads 异常之前,我无法从 graph.facebook.com 域下载 Facebook 个人资料信息。现在按预期工作。干杯!【参考方案4】:Xcode 项目 -> 转到 info.plist 并单击 + 按钮,然后添加(应用程序传输安全设置)展开,允许任意加载设置为 YES。 谢谢
【讨论】:
【参考方案5】:我正在使用 xCode 8.2。有点不一样,但是编辑PLIST文件需要在App Transport Security Settings
行中添加这两个Item...:
Allow Arbitrary Loads
和 Allow Arbitrary Loads in Web Content
... 并给他们两个密钥 YES
。
它对我有用,希望这对你有用,对不起我的英语。
【讨论】:
【参考方案6】:@William Kinaan 有最好的答案,但最好确保在异常域“localhost”下添加 NSAllowsArbitraryLoads ...而不是在更高的 NSTransportSecurity 级别它将向所有域开放。
【讨论】:
以上是关于应用传输安全已阻止明文 HTTP 资源的主要内容,如果未能解决你的问题,请参考以下文章