NSAllowsArbitraryLoads 不工作
NSAllowsArbitraryLoads not working
我有一个可以从 http 域下载一些信息的工作应用程序。但是在 Swift 2.0 和 Xcode 7 更新后,我的应用程序无法连接到服务器并下载 json 数据,我收到 "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." 错误。
我试过将这些行放入我的 info.plist:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
但是我得到同样的错误,它不工作。我总是从下载方法中得到零数据。有人有同样的错误吗?谢谢!
编辑:这是我的 info.plist 文件中的一张图片:
您是否尝试添加您的域,例如?您应该将其添加到 NSAppTransportSecurity
字典中。
<key>NSExceptionDomains</key>
<dict>
<key>abcde.com</key>
<dict>
<key>NSExceptionRequiresForwardSecrecy</key>
<true/>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
您可以尝试使用
nscurl --ats-diagnostics <your-URL>
在终端中。这可以帮助您找到允许您的应用程序连接到您的-URL 的设置。这仅适用于 OSX El Capitan。查看苹果 technote.
但是,如果您在 info.plist 文件中尝试过 NSArbitraryLoads,则此诊断工具可能无法为您提供帮助。我想你可能发现了一个错误。
我遇到了同样的问题,我尝试添加 NSExceptionMinimumTLSVersion
并且成功了。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
我不确定为什么这有帮助,但是...确实有帮助!我希望它对那里的人也有帮助
我觉得自己好傻。我在错误的 Info.plist 上添加了禁用 ATS 的键。我没有将它添加到 Supporting Files/Info.plist 文件中,而是将其添加到 MyAppTests/Supporting Files/Info.plist 文件中。不是 Xcode 中的错误,而是我大脑中的错误。谢谢大家的回答!
None 以前的解决方案对我有用,我将 NSAllowsArbitraryLoads 设置为 true,但 HTP 仍然无法工作,环顾四周后我注意到 info.plist 文件有 NSExceptionDomains 部分,所以我删除它进行测试,一切正常。
所以看起来 NSExceptionDomains 取消了 NSAllowsArbitraryLoads,希望这对您有所帮助。
我遇到了类似的问题,过了一会儿我发现 info.plist 文件已损坏。我只能建议直接检查 xml 而不仅仅是 xcode.
中的 plist 编辑器
如果您只需要在网络 (UIWebView/WKWebView/SafariViewController) 中加载 http://
资源,那么以下内容就足够了。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
</dict>
在我的例子中,我需要删除所有其他键,如 "Allow Arbitrary Loads in Web Content" 或 "Exception Domains" 才能使 "Allow Arbitrary Load" 工作,因为它在 "App Transport Security Settings" 下设置为 true在 Info.plist.
使用 XCode 8.2.1、iOS 10.2 测试。
我在 XCode 版本 8.3.2 (8E2002) 和 iOS 10.3 中遇到了同样的问题。删除所有键后,如 "Allow Arbitrary Loads in Web Content" 或 "Exception Domains","Allow Arbitrary Load" 键按预期工作。谢谢@dariukas。
在 iOS12 中,我无法使用旧方法使其工作
NSAllowsArbitraryLoads
只有当我将密钥更新为 NSExceptionAllowsInsecureHTTPLoads 时它才起作用。
我的 info.plist 部分有效:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>yourdomain.com</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
我有一个可以从 http 域下载一些信息的工作应用程序。但是在 Swift 2.0 和 Xcode 7 更新后,我的应用程序无法连接到服务器并下载 json 数据,我收到 "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." 错误。
我试过将这些行放入我的 info.plist:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
但是我得到同样的错误,它不工作。我总是从下载方法中得到零数据。有人有同样的错误吗?谢谢!
编辑:这是我的 info.plist 文件中的一张图片:
您是否尝试添加您的域,例如?您应该将其添加到 NSAppTransportSecurity
字典中。
<key>NSExceptionDomains</key>
<dict>
<key>abcde.com</key>
<dict>
<key>NSExceptionRequiresForwardSecrecy</key>
<true/>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
您可以尝试使用
nscurl --ats-diagnostics <your-URL>
在终端中。这可以帮助您找到允许您的应用程序连接到您的-URL 的设置。这仅适用于 OSX El Capitan。查看苹果 technote.
但是,如果您在 info.plist 文件中尝试过 NSArbitraryLoads,则此诊断工具可能无法为您提供帮助。我想你可能发现了一个错误。
我遇到了同样的问题,我尝试添加 NSExceptionMinimumTLSVersion
并且成功了。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
我不确定为什么这有帮助,但是...确实有帮助!我希望它对那里的人也有帮助
我觉得自己好傻。我在错误的 Info.plist 上添加了禁用 ATS 的键。我没有将它添加到 Supporting Files/Info.plist 文件中,而是将其添加到 MyAppTests/Supporting Files/Info.plist 文件中。不是 Xcode 中的错误,而是我大脑中的错误。谢谢大家的回答!
None 以前的解决方案对我有用,我将 NSAllowsArbitraryLoads 设置为 true,但 HTP 仍然无法工作,环顾四周后我注意到 info.plist 文件有 NSExceptionDomains 部分,所以我删除它进行测试,一切正常。
所以看起来 NSExceptionDomains 取消了 NSAllowsArbitraryLoads,希望这对您有所帮助。
我遇到了类似的问题,过了一会儿我发现 info.plist 文件已损坏。我只能建议直接检查 xml 而不仅仅是 xcode.
中的 plist 编辑器如果您只需要在网络 (UIWebView/WKWebView/SafariViewController) 中加载 http://
资源,那么以下内容就足够了。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
</dict>
在我的例子中,我需要删除所有其他键,如 "Allow Arbitrary Loads in Web Content" 或 "Exception Domains" 才能使 "Allow Arbitrary Load" 工作,因为它在 "App Transport Security Settings" 下设置为 true在 Info.plist.
使用 XCode 8.2.1、iOS 10.2 测试。
我在 XCode 版本 8.3.2 (8E2002) 和 iOS 10.3 中遇到了同样的问题。删除所有键后,如 "Allow Arbitrary Loads in Web Content" 或 "Exception Domains","Allow Arbitrary Load" 键按预期工作。谢谢@dariukas。
在 iOS12 中,我无法使用旧方法使其工作 NSAllowsArbitraryLoads
只有当我将密钥更新为 NSExceptionAllowsInsecureHTTPLoads 时它才起作用。 我的 info.plist 部分有效:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>yourdomain.com</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>