美文网首页
App Transport Security

App Transport Security

作者: JinyaMax | 来源:发表于2016-04-18 04:20 被阅读8137次

遇到的问题

刚刚写一个简单的获取天气数据的demo,进行Http请求的时候,程序报错提示:
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.

解决方法

  1. 在Info.plist中添加 App Transport Security Settings 类型 Dictionary ;
    并在App Transport Security Settings 下添加 Allow Arbitrary Loads 类型Boolean, 值设为 YES

  2. 或者在plist source code添加

    <key>NSAppTransportSecurity</key>
    <dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    </dict>

二者效果等同

解释原因、关于ATS

简单翻阅了Apple官方App Transport Security文档(简称ATS)得知:

ATS

ATS限制使用HTTP, 数据请求尽量通过HTTPS加密传输,
HTTPS的请求也要满足以下规定:

  1. 传输层协议(TLS)至少为1.2版本
  2. 连接的加密方式要提供Forward Secrecy,支持如下加密算法详见苹果官方文档
  3. 证书至少要使用一个SHA256的指纹与任一个2048位或者更高位的RSA密钥,或者是256位或者更高位的ECC密钥。如果不符合其中一项,请求将被中断并返回nil.

上面新增的配置中的NSAppTransportSecurityATS配置的根节点,配置了节点表示告诉系统要走自定义的ATS设置。而NSAllowsAritraryLoads节点则是控制是否禁用ATS特性,设置YES就是禁用ATS功能。

总结:

  • 如果请求源是HTTP,则按以上方法处理
  • 如果请求源是HTTPS,则需要根据是否满足以上三个条件来针对性地配置plist

相关文章

网友评论

      本文标题:App Transport Security

      本文链接:https://www.haomeiwen.com/subject/cutalttx.html