iOS9网络适配

从网上随便找了一个天气预报的接口。然后写了一个GET请求。

• 在Xcode6.4,一切正常。和预想的效果是一致的。


• 在Xcode7,果然是有问题的。


查了一些资料,iOS9把所有之前的http请求全部改成了https请求。统一采用TLS 1.2 SSL

要说目的,自然是为了增加数据的安全。防止被窃听、篡改、冒充。

苹果略显霸道,那也没辙。让你改你就改呗!


解决方法分为两大类:


1.服务器进行更更新。

据我个人所了解。这个应该是和服务器是什么系统有关。对应的解决方式也不同。应该是需要对症下药。


2.移动端回退到之前相对来说不安全的http

要想使用之前的方式。需要对Info.plist进行修改。


这里面又分为两大类。

• 指定某些请求使用之前的方式。

• 让所有的请求使用之前的方式。


一个一个来上图。

• 指定某些请求使用之前的方式。


Source code

<key>NSAppTransportSecurity</key>

<dict>

<key>NSExceptionDomains</key>

<dict>

<key>www.weather.com.cn</key>

<dict>

<key>NSIncludesSubdomains</key>

<true/>

<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>

<true/>

<key>NSTemporaryExceptionMinimumTLSVersion</key>

<string>TLSv1.1</string>

</dict>

</dict>

</dict>

NSExceptionDomains:里面放的是允许使用http请求的sever字典。

www.weather.com.cn:允许使用http请求的sever的名字,里面放的是对这个sever的一切配置。(替换成自己项目的sever的就好)

NSIncludesSubdomains:是否允许子域名。

NSTemporaryExceptionAllowsInsecureHTTPLoads:是否允许进行http请求。


• 让所有的请求使用之前的方式。


Source code

<key>NSAppTransportSecurity</key>

<dict>

<key>NSAllowsArbitraryLoads</key>

<true/>

</dict>

NSAllowsArbitraryLoads:允许任意请求加载。(彻底回到之前的方式)


结语:

截止到目前,官方文档只是说需要配置Info.plist。但是貌似并没有提及到如何去进行配置。顺便上个图。


这段话的意思总结一下就三点。


不管是建立新项目还是更新旧项目,赶紧给我换这种安全的方式。

如果你尝试不这么做,那么我就给你报错。

如果你真的不想这么做,那么去Info.plist里面去指定那个不安全的server


就手机端而言,第一种方式相比第二种方式更加合理。第二种方式虽然简单粗暴。但是很简单。如果想偷懒,那自然是使用第二种方式啦。


参考资料:

https://developer.apple.com/library/prerelease/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS9.html#//apple_ref/doc/uid/TP40016198-DontLinkElementID_13

https://github.com/meteor/meteor/issues/4560

http://devstreaming.apple.com/videos/wwdc/2015/711y6zlz0ll/711/711_networking_with_nsurlsession.pdf?dl=1




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值