IOS开发系列App Transport Security has blocked a cleartext HTTP (http://) resource load since it is in(代码
Posted Zev_Fung
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IOS开发系列App Transport Security has blocked a cleartext HTTP (http://) resource load since it is in(代码相关的知识,希望对你有一定的参考价值。
一、问题描述
在学习网络处理的过程,发现代码都没错,运行时会收到如下错误提示:
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.
二、问题分析
应用程序采取了明文HTTP协议(http://)。WWDC 15,苹果引入了一项隐私保护功能ATS(App Transport Security),是 Apple 在推进网络通讯安全的一个重要方式。ATS屏蔽HTTP明文传输协议资源加载,因为http明文传输协议不安全,连接必须改成更安全的HTTPS协议。在 ios 9 和 OSX 10.11中,默认情况下非HTTPS的网络访问是被禁止的。如果使用HTTP协议连接,会抛出一个错误。在Info.plist添加类型为Dictionary的NSAppTransportSecurity 并且将类型为 Boolean的NSAllowsArbitraryLoads 设置为 YES 即可来禁用 ATS,从而继续使用HTTP明文传输。
在WWDC 2016开发者大会上,苹果宣布了一个最后期限:到2017年1月1日 App Store中的所有应用都必须启用 App Transport Security安全功能。App Transport Security(ATS)是苹果在iOS 9中引入的一项隐私保护功能,屏蔽明文HTTP资源加载,连接必须经过更安全的HTTPS。苹果目前允许开发者暂时关闭ATS,可以继续使用HTTP连接,但到年底所有官方商店的应用都必须强制性使用ATS。
WWDC 16 ,Apple将在iOS 10和macOS 10.12收紧对HTTP的访问限制。从2017年1月1日起,所有新提交到App Store中的App都必须启用ATS 安全功能,默认是不允许使用 NSAllowsArbitraryLoads 来绕过 ATS 限制,保证 Spp 的网络请求都是 HTTPS 加密的,否则可能会在应用审核时遇到麻烦。
三、问题解决
方法一:直接打开Info.plist,插入以下代码
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
具体位置如下
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> ... <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict> ... </dict> </plist>
方法二:Xcode打开Info.plist ,添加类型为Dictionary的NSAppTransportSecurity 并且将类型为 Boolean的NSAllowsArbitraryLoads 设置为 YES 即可来禁用 ATS,从而继续使用HTTP明文传输。
以上是关于IOS开发系列App Transport Security has blocked a cleartext HTTP (http://) resource load since it is in(代码的主要内容,如果未能解决你的问题,请参考以下文章
iOS开发-Xcode 7 App Transport Security has blocked a cleartext HTTP 报错解决办法
iOS开发-Xcode 7 App Transport Security has blocked a cleartext HTTP 报错解决办法
Xamarin iOS OidcClient需要HTTPS(可能通过App Transport Security)
sh 用于在iOS 9中禁用App Transport Security的Bash脚本
iOS App 不支持http协议 App Transport Security has blocked a cleartext HTTP (http://)