App Transport Security已阻止明文HTTP资源

时间:2015-09-24 12:13:53

标签: ios socket.io

enter image description here

我在swift中使用Socket.IO库并且我一直收到此错误:

  

App Transport Security已阻止明文HTTP(http://)资源   负载,因为它是不安全的。可以通过配置临时例外   您应用的Info.plist文件。

当我尝试发送http请求时。我根据官方的苹果文档添加了plist键,但它没有帮助。

6 个答案:

答案 0 :(得分:26)

你需要像这样纠正:

enter image description here

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

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

答案 1 :(得分:6)

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

enter image description here

答案 2 :(得分:4)

我在屏幕截图中看到错误的密钥和拼写错误。这是一个有效的例子:

screen

答案 3 :(得分:4)

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

答案 4 :(得分:1)

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

Allow Arbitrary LoadsAllow Arbitrary Loads in Web Content ...并向他们提供密钥YES

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

enter image description here

enter image description here

答案 5 :(得分:0)

@William Kinaan有最好的答案,但最好确保在异常域&#34; localhost&#34;下添加 NSAllowsArbitraryLoads 。 ......而不是更高的NSTransportSecurity级别,可以打开所有域名。