苹果做了一个激进的决定,作为保护App传输安全的一部分,在iOS9中禁止所有不安全的HTTP请求。
这有助于强制实行安全访问实践,但在许多情况下,您,一个开发者,并不能控制服务器,亦或是你可以控制,但你想要在一个在应用程序浏览器中加载任意链接的外部内容。
如果你在开启ATS情况下(使用NSURLSession或库,比如AFNetworking)尝试使用HTTP请求,你会看到这样的错误:
Error Domain=NSURLErrorDomain Code=-1004 "Could not connect to the server." UserInfo=0x12ed5bad0 {NSUnderlyingError=0x12ee495b0 "The operation couldn’t be completed. (kCFErrorDomainCFNetwork error -1004.)"
现在告诉你怎么完全禁止ATS。打开info.plist文件,在文件里添加下面几行,添加完后你的info.plist文件看起来应该是这样子的
请记住,这个解决方案应该是你最后的手段。理想的解决方案是希望在您的服务器启用HTTPS,或者下一个解决方案,添加使用HTTP白名单域,如果这两个解决方案对您来说都行不通的话。那么你可以使用本文的方法,更精细的细节,请参阅这些文章。
本文翻译于这片文章,由于本人英语水平有限,有不对的地方还请大家指正。
网友评论