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明文传输。

info.plist

以上是关于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://)

关于iOS9中的App Transport Security相关说明及适配(更新于2016.7.1)