从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>
|
(全文完)