Cocoa学习

我的Cocoa/Cocoa Touch学习笔记

iOS 9中的App Transport Security

从iOS 9开始,系统默认已经不允许iOS应用访问不安全的链接(包括HTTP,以及被认为不安全的HTTPS请求)。很多开发者在把iOS应用迁移到iOS 9时,碰到的第一个问题,大致就是这个问题了。

虽然跳过iOS 9的这个默认安全设定并不是一个好的实践,但有时候免不了需要访问一些不安全的地址。要一劳永逸的全局跳过ATS,可以直接在Info.plist中加入以下值:

1
2
3
4
5
<key>NSAppTransportSecurity</key>
<dict>
  <key>NSAllowsArbitraryLoads</key>
  <true/>
</dict>

如果你只需为部分域名跳过ATS检查,可以用类似如下的方式设置ATS。下面这个例子用于为example.com创建一个绕过ATP检查的特例,以允许iOS应用访问不安全的example.com连接。这里不对所有的Key做出一一解释,Apple文档中对所有Key有详细说明。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<key>NSAppTransportSecurity</key>
<dict>
  <key>NSExceptionDomains</key>
  <dict>
      <key>example.com</key>
      <dict>
          <key>NSExceptionAllowsInsecureHTTPLoads</key>
          <true/>
          <key>NSExceptionRequiresForwardSecrecy</key>
          <false/>
          <key>NSIncludesSubdomains</key>
          <true/>
      </dict>
  </dict>
</dict>

(全文完)

Comments