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. ListView为什么用setOnItemClick这个方法和onTouch这个方法有冲突

    因为如果onTouch方法中返回true的话,这次事件就被ListView中的item控件消费了,所以不会执行ListVIew的setOnItemClick这个方法了,如果onTouch方法返回fal ...

  2. MFC视图切换大全总结

    单纯视图之间的切换 单文档多视图切换是我在学习MFC中遇到的一个老大难问题,在今天总算是一一破解了.我觉得视图切换分为三个等级,第一是在未切分窗格的情况下切换视图类:第二是在分割窗格的一个窗格内实行视 ...

  3. 【转】python的小知识

    1. 如何反序访问一个序列(how do I iterate over a sequence in reverse order) 如果序列是list,则使用list.reverse()即可将序列反序. ...

  4. python的一些总结3

    好吧 刚刚的2篇文章都很水.. 这篇 也是继续水 在 templates 右键新建 html 文件:如 index.html (输入以下代码) <!DOCTYPE html> <ht ...

  5. 解决用Eclipse开发Android程序时不能生成R.java的问题

    今天我照着Mars老师的视频教程开始学习Android程序开发. 但是,我的Eclipse死活不能生成R.java文件,新建的工程也不行. 然后我百度,百度出来的结果一般是说这样解决: 1.clean ...

  6. Middleware课程01-概述

    中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源.中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯.是连接两个独立应用程序或独立系统的软件.相 ...

  7. SSH框架之Struts(2)——Struts的执行流程之配置文件

    上篇我们大致了解了一下採用了Struts框架的web页面运行流程. 接下来的几篇我们通过Struts的源代码来学习一下Struts的内部原理. 当server启动的时候.server会依据配置文件初始 ...

  8. C++11 新特性之 Lambda表达式

    lambda表达式能够用于创建并定义匿名的函数对象,以简化编程工作 Lambda的语法例如以下: [函数对象參数](操作符重载函数參数)->返回值类型{函数体} []内的參数指的是Lambda表 ...

  9. LINUX 内核文档地址

    Linux的man很强大,该手册分成很多section,使用man时可以指定不同的section来浏览,各个section意义如下: 1 - commands2 - system calls3 - l ...

  10. python打印详细的异常信息

    #!/usr/bin/env python #coding=utf-8 import traceback try: 1/0 except Exception, e: print e print tra ...