NSExceptionDomains 的设置方法如下, 比如我们要将 swiftcafe.io 这个域名排除在 ATS 验证之外,就可以这样:
<key>NSAppTransportSecurity</key><dict><key>NSAllowsArbitraryLoads</key><true/><key>NSExceptionDomains</key><dict><key>swiftcafe.io</key><dict><key>NSExceptionAllowsInsecureHTTPLoads</key><true/></dict></dict></dict>
上面说的是在我们已经确定 App 所访问的数据范围的情况下的处理方法。 但还有一种情况, 如果我们开发的是类似浏览器的 App。这样用户需要输入任意的地址,那怎么办呢? 我们不可能把所有的域名都写到 NSExceptionDomains 里面。
这就可以使用 iOS 10 对 ATS 提供的一个新属性 NSAllowsArbitraryLoadsInWebContent。 顾名思义了,就是只允许加载任意类型的 web 内容。这样我们的 WKWebView 就可以加载任何类型的页面了。
使用 NSAllowsArbitraryLoadsInWebContent 的例子:
<key>NSAppTransportSecurity</key><dict> <key>NSAllowsArbitraryLoadsInWebContent</key> <true/></dict>