前言
今天下了XCode7 Beta版,跑了一下自家的APP,结果发现所有服务器请求都返回失败,明明网络正常,怎么会返回失败呢?起初我以为是AFNetworking的问题,于是我写了个demo,去掉AFNetworking,直接用NSURLSession请求数据,也是请求失败。于是乎一顿Google,原来是iOS9(XCode7的模拟器默认是iOS9)的新特性——ATS搞的鬼。
简介
ATS全称为App Transport Security,它是iOS9的一个新特性,旨在提高iOS设备与服务器交互的安全性。简单地说,ATS会阻止未注册的网络请求。你可以在info.plist文件中注册相应的host,这样该host的网络请求就不会被阻止。你也可以设置不阻止任何host的网络请求。
详细设置
如果你想设置不阻止任何网络,只需要在info.plist文件中加入以下内容即可
如果你想设置只允许特定host的网络请求,在info.plist文件中加入以下内容
这样,你在发往baike.baidu.com
这个host的请求就都不会被阻止了,你可以注册多个域名。
参考资料
What’s New in iOS9
NSURLSession/NSURLConnection HTTP load failed
转载地址:适配iOS9(ATS问题)