iOS9网络适配
来源:互联网 发布:ubuntu kvm安装win7 编辑:程序博客网 时间:2024/05/22 15:05
最近在搞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
从网上随便找了一个天气预报的接口。然后写了一个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 0
- iOS9网络适配
- iOS9网络适配
- ios9适配网络
- iOS9 new_001:iOS9网络适配(ATS)
- iOS9网络适配教程
- iOS9.1 网络适配
- 关于IOS9 网络适配
- iOS9中https网络适配
- iOS9网络适配 info.plist配置
- Xcode7 iOS9网络请求适配 网络白名单
- xcode7.0-iOS9新特性之二:网络适配
- iOS9网络适配_改用更安全的HTTPS
- iOS-pthread && NSThread && iOS9网络适配
- iOS9网络适配_改用更安全的HTTPS
- iOS9 https网络适配_ATS(资料合集)
- iOS9适配注意事项
- iOS9适配小结
- iOS9适配技巧
- spark学习3-CountOnce
- 爬爬爬之路:C语言(四) 一维数组篇
- 接口测试之HttpClient
- 隐藏状态栏--iOS开发
- jQuery源码分析之removeAttr方法和attr方法
- iOS9网络适配
- eclipse调试以及step into step over step return区别
- C++中Format的用法
- js闭包(二)
- 存储过程(1)mysql中游标的使用
- 我的霸面之旅
- Median of Two Sorted Arrays
- 为什么不能在子类的初始化列表里初始化父类的成员
- CVPR 2015 Oral概览 - 第三天下午