App Transport Security 已阻止明文 HTTP 资源

App Transport Security has blocked a cleartext HTTP resource

我在 swift 中使用 Socket.IO 库,但我不断收到此错误:

App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.

当我尝试发送 http 请求时。我根据苹果官方文档将密钥添加到 plist,但没有帮助。

我在你的屏幕截图中看到一个错误的键和一个拼写错误。这是一个工作示例:

您需要这样更正:

为了方便起见,这是 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>

但是,您应该在开发阶段使用最新的。

我发现另一种更方便的解决方法是默认使用 NSAllowsArbitraryLoads 键禁用 App Transport Security。因此,您未包含在 NSExceptionDomains 字典中的任何域(或者如果您根本不包含 NSExceptionDomains)将不受 App Transport Security 的约束。

Xcode 项目 -> 转到 info.plist 并单击 + 按钮然后添加(应用程序传输安全设置)展开,允许任意加载设置为是。 谢谢

我在 xCode 8.2 工作。有点不同,但是编辑 PLIST 文件你需要在 App Transport Security Settings 行中添加这两个项目...:

Allow Arbitrary LoadsAllow Arbitrary Loads in Web Content... 并给他们两个密钥 YES.

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

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