我在swift中使用Socket.IO库并且我一直收到此错误:
App Transport Security已阻止明文HTTP(http://)资源 负载,因为它是不安全的。可以通过配置临时例外 您应用的Info.plist文件。
当我尝试发送http请求时。我根据官方的苹果文档添加了plist键,但它没有帮助。
答案 0 :(得分:26)
你需要像这样纠正:
为了方便起见,这是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的约束。
答案 2 :(得分:4)
答案 3 :(得分:4)
Xcode项目 - &gt;转到info.plist并单击+按钮,然后单击添加(应用程序传输安全设置)展开,允许任意负载设置为是。 谢谢
答案 4 :(得分:1)
我在xCode 8.2中工作。它有点不同,但编辑PLIST文件需要在App Transport Security Settings
行中添加这两个项目......:
Allow Arbitrary Loads
和Allow Arbitrary Loads in Web Content
...并向他们提供密钥YES
。
它对我有用,希望这对你有用,对不起我的英语。
答案 5 :(得分:0)
@William Kinaan有最好的答案,但最好确保在异常域&#34; localhost&#34;下添加 NSAllowsArbitraryLoads 。 ......而不是更高的NSTransportSecurity级别,可以打开所有域名。