无法在iOS 11上为http禁用App Transport Security

时间:2018-08-08 20:21:37

标签: ios

过去,禁用ATS从未遇到任何问题,但现在我根本无法连接到http网址(请继续获取“错误:无法使用http方案联系服务器。仅允许使用https”)。通过阅读过去的问题,我已经尝试了info.plist中的一些操作,但是没有一个可以解决问题。这是我的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”,则显然不会禁用所有网络连接的所有ATS限制

更新:我为URL运行了/ usr / bin / nscurl --ats-diagnostics,但一切都失败了。 但是,这又使我再次回到该Apple文档声明中-如果所有nscurl组合均失败,那么这不仅指向:“如果(NSAllowsArbitraryLoads)设置为YES,则禁用所有网络连接的所有ATS限制”再次声明。

1 个答案:

答案 0 :(得分:-2)

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

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