解决iOS9中HTTP请求不能正常使用

很久之前就准备来记录,一直忘了,今天新建一个project写点东西,刚好遇到此问题,便记录下来.

1.先上解决方法:

  1. Info.plist中添加NSAppTransportSecurity类型Dictionary
  2. 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才是以后的主流.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值