我们如何在一个应用程序中使用HTTP和HTTPS两种ATS(应用程序传输安全性)?

苹果公司针对iOS 9和OSX 10.11 El Capitan宣布了“App Transport Security”。 iOS 9的“iOS 新增function ”指南解释说:

应用程序传输安全性(ATS)允许应用程序向其Info.plist文件添加声明,以指定需要安全通信的域。 ATS防止意外泄露,提供安全的默认行为,并且易于采用。 您应该尽快采用ATS,无论您是创build新应用还是更新现有应用。

如果我们想删除或禁用ATS意味着我们只想使用HTTP,那么我们在.plist文件中进行input,如下所示:

 <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服务。 而且我想使用像谷歌地图或Facebooklogin等HTTPS域名或类似的一个networking服务是为HTTPS域。

那么我们如何将.plist文件中的所有东西结合起来呢?

如果您的应用程序(例如第三方Web浏览器)需要加载任意内容,Apple提供了一种完全禁用ATS的方法,但是我怀疑您谨慎使用此function是明智的做法:

完全禁用ATS 。 只需在Info.plist文件中包含以下内容,然后在One Application中使用HTTPHTTPS

 <key>NSAppTransportSecurity</key> <dict> <!--Include to allow all connections (DANGER)--> <key>NSAllowsArbitraryLoads</key> <true/> </dict> 

希望这可以帮助!

如果您的应用程序(例如第三方Web浏览器)需要加载任意内容。 然后添加到plist。 进入Plist