iOS9 +http请求不能用的解决办法
报错NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802);
查询得知 iOS9引入了新特性App Transport Security (ATS)。详情:App Transport Security (ATS)
新特性要求App内访问的网络必须使用HTTPS协议。
但是现在公司的项目使用的是HTTP协议,使用私有加密方式保证数据安全。现在也不能马上改成HTTPS协议传输。
解决方法:
在Info.plist中添加
NSAppTransportSecurity类型Dictionary。在
NSAppTransportSecurity下添加NSAllowsArbitraryLoads类型Boolean,值设为YES
在项目配置文件info.plist中添加App Transport Security Settings字典dictionary。在其下添加属性名为Allow Arbitrary Loads的bool值为yes。
即可解决。
如下图:

补充说明:
上面介绍的方法虽然解决了网络访问的问题,但是苹果提供的安全保障也被关闭了。
不过,按照国内的现状,关闭这个限制也许是更实际的做法。
至于原因就太多了,第三方SDK(几乎都是访问HTTP),合作伙伴接入(不能要求它们一定要支持HTTPS)。
如果你的App没有受到这些原因的限制,还是更建议你增加HTTPS支持,而不是关闭限制。
请大家根据项目的实际情况作调整。
出于安全考虑我们提倡使用HTTPS,退而求其次,优先考虑使用例外:将允许访问的域加入到配置列表中
@banxi1988 补充了配置的方法
对于实在不支持HTTPS的应该首先考虑添加例外
添加例外的方式也很简单:
左键Info.plist选择open with source code
然后添加类似如下的配置:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>test.testdomain.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
根据自己需要的域名修改, NSIncludeSubdomains 顾名思义是包括子域的意思。
参考:
https://github.com/meteor/meteor/issues/4560
http://stackoverflow.com/questions/31662134/https-request-in-ios-9-nsurlsession-nsurlconnection-http-load-failed-kcfstrea
iOS9 +http请求不能用的解决办法的更多相关文章
- 66.ajax--ajax请求多个url解决办法
ajax请求多个url解决办法 以下四种方法是我找的,我也进行实践过. 测试中有四个请求接口,原本需要13S,用了第三种方法缩减到7S,但是仍不能达到2S以内. 所以仅供参考,待我找到能缩减到2S以内 ...
- Windows7 提示“无法访问 xxxx,您没有权限访问,请与网络管理员联系请求访问权限”的解决办法
Windows7 客户端访问提示"无法访问 xxxx,您没有权限访问,请与网络管理员联系请求访问权限"的解决办法
- 项目适配iOS9遇到的一些问题及解决办法
1.网络请求报错.升级Xcode 7.0发现网络访问失败.输出错误信息 The resource could not be loaded because the App Transport Secur ...
- 项目适配iOS9遇到的一些问题及解决办法(更新两个小问题)
本文转载至 http://www.bubuko.com/infodetail-1110714.html http://www.jianshu.com/p/631bd7f12a38 1.网络请求报错.升 ...
- 项目适配iOS9遇到的一些问题及解决办法 ,以及URL 白名单配置方法
1.网络请求报错.升级Xcode 7.0发现网络访问失败.输出错误信息 The resource could not be loaded because the App Transport Secur ...
- iOS9 HTTP 不能正常使用的解决办法
Google后查证,iOS9引入了新特性App Transport Security (ATS).详情:App Transport Security (ATS) 新特性要求App内访问的网络必须使用H ...
- IE浏览器因缓存问题未能成功向后端发送请求的几个解决办法
这段时间前后端联调,解决IE.谷歌等浏览器兼容问题,真是让人有点焦头烂额,各种奇葩问题层出不穷,旧问题刚去,新麻烦又来,其中尤其以IE浏览器缓存的问题最多.有若干次都是因为这个缓存,使得前端的请求没有 ...
- Jmeter——请求响应内容乱码解决办法
前段时间,换过一次设备,重新下载了Jmeter.有一次在编写脚本时,响应内容中的中文一直显示乱码. 遇到乱码不要慌,肯定是有办法来解决的.具体解决办法,可以参考之前的博文,Jmeter--BeanSh ...
- angular js 在ie11 下的get请求缓存问题的解决办法
使用angularjs 1.x开发的应用在ie11 下回碰到各种怪异的情况:一般表现在:卡,慢,丑. 还有另外一种情况,就是:get请求被缓存,导致页面数据没有刷新.今天我们就来解决这个问题. 几行代 ...
随机推荐
- 使用Java-UrlConnection调用webService接口
URL wsUrl = new URL("http://192.168.1.1:8080/webservice"); HttpURLConnection conn = (HttpU ...
- [翻译]lithium 安装
安装 要求 web服务器 你需要一个web服务器来运行你的应用,最好是可以运行在你的本地机器上(你所有的开发不是都在这上面做的吗,不是吗?不是吗?).对于PHP而言,框架在很多web服务器上都运行的很 ...
- sql-将字符串按指定字符分割插入指定表中
CREATE PROC SPLIT( @STR VARCHAR(MAX), --截取字符串 ), --截取字符 ) --存放表名 ) AS BEGIN ) IF(OBJECT_ID(@TABLE) I ...
- linux安装配置apk打包程序gradle+jdk+Android_sdk+python自动化编译脚本
安装gradle: 1.下载gradle包 去这里下载需要的tar.gz包:https://services.gradle.org/distributions/ 2.解压 tar zxvf gradl ...
- requirejs加载css样式表
1. 在 https://github.com/guybedford/require-css 下载到require-css包 2. 把css.js或者css.min.js复制到项目的js目录下 3. ...
- js设计模式总结-迭代器模式
迭代器模式 要解决的问题 迭代器要解决的问题很简单很单纯,就是进行遍历操作. 实现原理 基本所有语言都实现了迭代器,javascript也不例外,如Array.prototype.forEach,fo ...
- RealSense开发-Session和SenseManager的几种创建方法
从Intel RealSense 的SDK文档对其架构(如图1所示)的始描述可知,Session是SDK应用的主控模块,必须在所有模块操作之前创建,并且在所有模块注销后最后注销.SenseManage ...
- Oracle SQL explain/execution Plan
From http://blog.csdn.net/wujiandao/article/details/6621073 1. Four ways to get execution plan(anyti ...
- git hub
如果希望保留生产服务器上所做的改动,仅仅并入新配置项, 处理方法如下:git stashgit pullgit stash pop然后可以使用git diff -w +文件名 来确认代码自动合并的情况 ...
- node.js基础 1之 Querystring参数处理小利器
在处理查询字符串中很有用(⊙o⊙)哦~~~ querystring.stringify(obj,sign1,sign2)//将对象转化成url中query部分的形式 参数:1.要转化的对象 2.链接符 ...