无法在 iOS 11 中禁用 http 的应用程序传输安全性



我过去在禁用 ATS 时从未遇到过任何问题,但现在我根本无法连接到 http url(不断收到"错误:无法使用 http 方案联系服务器。只允许 https"(。通过阅读过去的问题,我已经在 info.plist 中尝试了一些事情,但没有一个能解决问题。这是我的信息列表的当前内容

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>domainTheAppIsTryingToContact.com</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>

为什么上述内容不允许我通过 http 进行连接?

如果我只是单独使用 NSAllowsArbitraryLoads而没有 NSExceptionDomains,它也不起作用(我只是在尝试使用 NSExceptionDomains 来尝试让事情工作( - 那么为什么 ATS 的文档会这样说:

如果 (NSAllowsArbitraryLoads( 设置为 YES,则禁用所有 ATS 限制 对于所有网络连接

这不是一个正确的陈述,如果我收到"错误:无法使用 http 方案联系服务器。只允许 https">

更新:我为网址运行了/usr/bin/nscurl --ats-diagnostics 并且一切都失败了。 然而,这让我再次回到了苹果文档声明 - 如果所有nscurl组合都失败了,那么这是否只是指向:"如果(NSAllowsArbitraryLoads(设置为YES,禁用所有网络连接的所有ATS限制"再次是一个错误的说法。

如果您仍处于原型/开发模式,您应该能够将NSAllowsArbitraryLoads更改为NSAllowsArbitraryLoadsInWebContent,这允许我运行以下内容并加载页面:

override func viewWillAppear(_ animated: Bool) {
webview.load(URLRequest.init(url:URL.init(string:"http://example.com")!))
}

最新更新