繁体   English   中英

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

[英]Can't disable App Transport Security for http with iOS 11

过去,禁用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限制”再次声明。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM