iOS 9发布后,原来开发的iPad应用在iOS9下面测试时,协议使用的是HTTP,发送网络请求时,Console窗口输出:

App Transport Security has blocked a cleartext HTTP(http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.

由上面的提示可以知道,ATS阻止了不安全的网络请求,为了使得我们的网络请求继续使用以前的HTTP协议(苹果现在建议使用HTTPS,所以建议尽快使用HTTPS来发送网络请求),按照上面的建议在Info.plist中添加了NSAppTransportSecurity为键的字典,其中包含一个键为NSAllowsArbitraryLoads值为Bool类型(设置为YES)的item,如图所示:

或者按照源码方式打开Info.plist文件并如下添加:

<key>NSAppTransportSecurity</key>

<dict>

  <key>NSAllowsArbitraryLoads</key>

  </true>

</dict>

重新编译,启动应用,发送网络请求,奇怪的是结果和之前完全一样,Console依然输出同样的警告信息,程序弹出窗口如下所示(与之前也完全相同):

到底原因在哪里啊?尝试了在iPhone上的应用,添加NSAppTransportSecurity字典到Info.plist之后是可以工作的,但是在iPad模拟器上还真机上却不能工作,到底为什么?

于是重新新建一个iPad应用工程,在iOS9下面通过HTTP协议请求百度主页“http://www.baidu.com”内容,在没有添加NSAppTransportSecurity字典时(也就是说没有禁止掉iOS9默认的ATS特性时)程序输出和上面一样的警告信息。此时在Info.plist上添加NSAppTransportSecurity字典禁用掉ATS特性,再次请求百度主页内容发现请求成功完成,那么很显然问题不在于iOS9模拟器,究竟是什么原因呢?

想到之前经常遇到一些资源类的内容改变之后不能在编译时及时得到反映的情况,决定把Info.plist文件先备份一份,之后删除掉Info.plist文件,重新编译程序后发现XCode报错,说缺少Info.plist文件,此时把备份的Info.plist文件恢复到原来的位置并再次添加到工程中,重新编译并启动应用再次通过HTTP协议发起网络请求,网络请求居然成功完成,看来问题在于原来的Info.plist文件内容的改变没有即时在编译的时候得到应用,或许XCode只是使用了之前的Info.plist文件(缓存的?)内容。

因此,当遇到修改了Info.plist文件内容后程序并没有表现出预想的行为的情况时,可以尝试备份Info.plist文件,然后删除原来的Info.plist编译程序,当出错之后,再次从备份的Info.plist文件恢复到原来的位置并添加到XCode中,重新编译,问题可能就会得到解决。

禁用iOS9 App Transport Security(ATS)特性时不起作用的更多相关文章

  1. iOS9 Error Domain=NSURLErrorDomain Code=-1022 App Transport Security (ATS)

    iOS 9在HTTP 访问时会出错  iOS9 Error Domain=NSURLErrorDomain Code=-1022 这时需要修改info.plist 文件 在Info.plist中添加N ...

  2. 关于iOS9中的App Transport Security相关说明及适配(转)

    原文:http://my.oschina.net/vimfung/blog/494687 iOS9中新增App Transport Security(简称ATS)特性, 主要使到原来请求的时候用到的H ...

  3. 关于App Transport Security的更新,中英文对照 --Xcode 7 --iOS9

    章节都为本人定义,无抄袭,其中英文部分内容为官方文档摘抄以及自己总结,翻译的不好,敬请指正 App Transport Security(暂且翻译为app传输安全) What is ATS? App ...

  4. IOS9网络请求报错:The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.

    今天下载Xcode7试了下,运行项目时报上面的错误,网上查了下原来iOS9引入了新特性App Transport Security (ATS).详情:App Transport Security (A ...

  5. App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file

    ios进行http请求,会出现这个问题: App Transport Security has blocked a cleartext HTTP (http://) resource load sin ...

  6. 网络请求报错:The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.

    iOS9引入了新特性App Transport Security (ATS).详情:App Transport Security (ATS) 如果你想设置不阻止任何网络,只需要在info.plist文 ...

  7. Xcode7 beta 网络请求报错:The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.

    Xcode7 beta 网络请求报错:The resource could not be loaded because the App Transport Xcode7 beta 网络请求报错:The ...

  8. The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.问题解决

    didFailLoadWithError(): Error Domain=NSURLErrorDomain Code=-1022 "The resource could not be loa ...

  9. Xcode7 beta 网络请求报错:The resource could not be loaded because the App Transport Security policy requir

          今天升级Xcode 7.0 bata发现网络访问失败.输出错误信息 The resource could not be loaded because the App Transport S ...

随机推荐

  1. TChromeTabs 优化改进

    已知未解决问题 全屏时当窗体失去焦点,则会显示出未绘制完成的原标题栏(Fixed): 处于非 Areo 效果下时,窗体标题栏需要定制. 新增按钮上的 Hint 提示后再移至其它标签,将无法重新提示. ...

  2. 关于MVC中DropDownListFor的一个bug

    如以下代码: //后台 代码 ViewData["source_type"] = new List<SelectListItem> { "}, "} ...

  3. Crystal Reports课程01-连接SQL Sever数据库

    选择[OLE DB(ADO)] 选择[microsoft DB provider for SQL Sever],点击[下一步] 填写连接的服务器,数据库,用户名,密码等信息,然后点击[下一步] 选择[ ...

  4. hdu 5428 The Factor 分解质因数

    The Factor  Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://bestcoder.hdu.edu.cn/contests/contest ...

  5. C++ AfxBeginThread1

    9*9乘法口诀 关键点 实现过程 在 class CMfc01Dlg : public CDialog {     // Construction public:     CMfc01Dlg(CWnd ...

  6. javaio学习笔记-字符流类(1)

    1.java.io包中的字符流类-BufferedReader和BufferedWriter: BufferedReader:缓存的输入字符流; BufferedWriter:缓存的输出字符流; In ...

  7. UML视图(九)部署图

    一.什么是部署图? 部署图对面向对象系统的物理方面建模,描写叙述系统执行时节点.构件实例及其对象的配置.主要用来在部署系统时涉及到的硬件(处理器和设备)进行建模. 二.部署图的组成元素? 部署图主要包 ...

  8. java spring 使用注解来实现缓存

    这里举例使用spring3.1.4 + ehcache 注解的方式使用cache 是在spring3.1加入的 使用方法: 1.ehcache依赖+spring依赖 <!-- ehcache依赖 ...

  9. QT断点续传

    //功能:    根据一个URL地址将数据保存到指定路径下,支持断点续传//参数:    url            --需要访问的URL地址//         SavePath       -- ...

  10. python学习笔记概述

    第一次接触python是因为一个项目需要做自动化测试,因为各种限制没有使用QTP,选择了开源的比较流行的selenium,但如果只是靠selenium进行录制脚本.修改脚本这个很多时候没办法满足需求, ...