苹果在 iOS 9 中引入了应用传输安全功能,它默认需要所有的应用使用 HTTPS 协议。由于不是所有的服务都由 HTTPS 提供,因此苹果还提供了一个禁用 ATS 的方式,既可选择性的使用也可全局应用。
如果您的应用需要能够加载所有的 URL(比如说在 UIWebview中),那么您可能需要通过设置NSAllowsArbitraryLoads键值为YES来全局禁用 ATS。这完全是可以的,但是一旦您全局禁用了 ATS 功能,那么您需要在重要区域启用ATS 服务。您需要使用NSExceptionDomains键来完成此项功能。比如说,这是 Workflow 的 Info.plist 文件的一部分内容:
您可以看到,我们支持用户通过 HTTP 下载文件,但是我们同样也支持通过 HTTPS 来连接 workflow.is(以及所有 Workflow 使用的 API )。
还需要注意的是,每一个包都需要应用 ATS 功能。这意味着您不仅需要给您主应用的 Info.plist 文件添加 ATS 字典,而且还要同时给扩展的 Info.plist 文件添加。