解决iOS9中HTTP请求不能正常使用
2016-02-26 16:18
519 查看
很久之前就准备来记录,一直忘了,今天新建一个project写点东西,刚好遇到此问题,便记录下来.
在NSAppTransportSecurity下添加NSAllowsArbitraryLoads类型Boolean,值设为YES
注意:单元测试里的那个info.plist 修改是没有用的
修改完info.plist应该如下:
新特性就是要求App里所有网络请求必须使用的是HTTPS协议,
但是这不实际,因为很多第三方SDK里使用的都是HTTP协议,当然还有其他原因.
如果你的App没有受到这些原因的限制,还是更建议你增加
方法如下:
左键
然后添加类似如下的配置:
可以根据自己需要的域名进行修改, NSIncludeSubdomains 是包括子域的意思。
1.先上解决方法:
在Info.plist中添加NSAppTransportSecurity类型Dictionary在NSAppTransportSecurity下添加NSAllowsArbitraryLoads类型Boolean,值设为YES
注意:单元测试里的那个info.plist 修改是没有用的
修改完info.plist应该如下:
2.探索:
在网上查询得知,iOS9引入了新特性App Transport Security (ATS)。详情:点击这里 .
新特性就是要求App里所有网络请求必须使用的是HTTPS协议,
但是这不实际,因为很多第三方SDK里使用的都是HTTP协议,当然还有其他原因.
如果你的App没有受到这些原因的限制,还是更建议你增加
HTTPS支持,而不是关闭限制,但是此方法虽然解决了网络访问的问题,但是苹果提供的安全保障也被关闭了。不过,按照国内的现状,关闭这个限制也许是更实际的做法。
3.补充
对于实在不支持HTTPS的应该首先考虑添加例外:
方法如下:
左键
Info.plist选择
open with source code
然后添加类似如下的配置:
<key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>qq.com</key> <dict> <key>NSIncludesSubdomains</key> <true/> </dict> <key>sina.com.cn</key> <dict> <key>NSIncludesSubdomains</key> <true/> </dict> </dict> </dict>
可以根据自己需要的域名进行修改, NSIncludeSubdomains 是包括子域的意思。
4.总结
现在大部分公司的App里传输数据时都是未加密或者是使用私有方式来加密,但始终存在安全隐患,苹果现在正在加大应用安全的管控,此次更新可以看出苹果对于信息安全的重视程度(也许跟前几次iCloud信息失窃有关),HTTPS才是以后的主流.相关文章推荐
- [神经网络]2.2/2.3-How the backpropagation algorithm works-The two assumptions we need...(翻译)
- 计算机网络13--网络应用的体系结构
- 网络编程(三) 下载任务,支持断点续传
- 网络编程(二)NSURLSessionConfiguration
- 网络编程(一) 利用NSURLSession发送GET POST请求
- mac 下 wireshark找不到网络接口
- Android实现网络多线程断点续传下载
- Hp-ux下网络IP配置
- AsyncTask异步访问网络数据
- iOS学习 IOS 9 适配系列教程(HTTP转HTTPS的两种方法)
- 使用Swift调用AFNetworking进行网络请求
- HttpClient 4.5版本设置连接超时时间
- 基于nginx的TCP Proxy实现数据库读写分离
- 欢迎使用CSDN-markdown编辑器
- HTTP无状态协议和Connection:Keep-Alive容易犯的误区
- http 安装apxs扩展
- Cordova学习教材 http://www.yiibai.com/cordova/cordova_battery_status.html
- HttpClient4获取抓取网页编码,内容等信息
- Android http中文乱码问题
- HTTP协议学习