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 Loads
和 Allow Arbitrary Loads in Web Content
... 并给他们两个密钥 YES
.
它对我有用,希望它对你有用,对不起我的英语。
@William Kinaan 有最好的答案,但确保在异常域 "localhost" 下添加 NSAllowsArbitraryLoads 似乎最有意义 ...而不是在更高的 NSTransportSecurity 级别,它向所有域开放。
我在 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 Loads
和 Allow Arbitrary Loads in Web Content
... 并给他们两个密钥 YES
.
它对我有用,希望它对你有用,对不起我的英语。
@William Kinaan 有最好的答案,但确保在异常域 "localhost" 下添加 NSAllowsArbitraryLoads 似乎最有意义 ...而不是在更高的 NSTransportSecurity 级别,它向所有域开放。