【发布时间】:2015-09-25 03:05:06
【问题描述】:
Apple 宣布了适用于 iOS 9 和 OSX 10.11 El Capitan 的“App Transport Security”。 iOS 9 的“What’s New in iOS”指南解释道:
应用传输安全 (ATS) 允许应用向其添加声明 Info.plist 文件,用于指定需要安全的域 沟通。 ATS 防止意外泄露,提供安全的 默认行为,并且易于采用。您应该尽快采用 ATS 尽可能,无论您是在创建新应用程序还是 更新现有的。
如果我们想删除或禁用 ATS 意味着我们只想使用 HTTP,那么我们将在 .plist 文件中输入如下:
<key>NSAppTransportSecurity</key>
<dict>
<!--Include to allow all connections (DANGER)-->
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
如果我们的域在 HTTPS 中,我们将在 .plist 文件中输入如下:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>yourserver.com</key>
<dict>
<!--Include to allow subdomains-->
<key>NSIncludesSubdomains</key>
<true/>
<!--Include to allow HTTP requests-->
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<!--Include to specify minimum TLS version-->
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
</dict>
</dict>
问题是:
如果我的应用程序仅在 HTTP 等 Web 服务上运行。我想使用 HTTPS 域,如谷歌地图或 Facebook 登录等。或者像一个 web 服务这样的东西是用于 HTTPS 域的。
那么我们如何将.plist文件中的两者结合起来呢?
【问题讨论】:
-
那么,您只想对特定域使用 HTTPS,而对其他所有域使用 HTTP?
-
@NicolasMiari 两种情况都是。反之亦然。
-
只需为您想要 https 的域添加例外,并且不要包含
NSTemporaryExceptionAllowsInsecureHTTPLoads键 -
@Paulw11 谢谢。你能在答案中描述更多吗?
标签: ios objective-c swift ios9 app-transport-security