应用传输安全已阻止明文 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 LoadsAllow Arbitrary Loads in Web Content... 并给他们两个密钥 YES

它对我有用,希望这对你有用,对不起我的英语。

【讨论】:

【参考方案6】:

@William Kinaan 有最好的答案,但最好确保在异常域“localhost”下添加 NSAllowsArbitraryLoads ...而不是在更高的 NSTransportSecurity 级别它将向所有域开放。

【讨论】:

以上是关于应用传输安全已阻止明文 HTTP 资源的主要内容,如果未能解决你的问题,请参考以下文章

应用程序传输安全 Xcode 7 beta 6

graph.facebook.com - 传输安全块

java被安全设置阻止,安全级别只有高和非常高 怎么办

应用程序被java安全阻止了怎么办?

应用程序被java安全阻止怎么办

内容安全策略:页面的设置阻止了资源的加载