NSExceptionAllowsInsecureHTTPLoads不能用于IP地址
排除iOS 9上的ATS不适用于我。
我有一个testing服务器没有域名(只有IP地址),没有SSL证书(所以它是HTTP而不是HTTPS)
尝试:
<key>52.24.145.252</key> <dict> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> <key>NSIncludesSubdomains</key> <true/> </dict>
但是我仍然得到错误:
App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.
我究竟做错了什么?
您需要将NSAppTransportSecurity
字典添加到您的info.plist
。 然后将NSAllowsArbitraryLoads
键添加到该字典并将布尔值设置为YES
。
更新
从2017年1月起,如果您使用上述方法从ATS退出,则需要在向AppStore提交应用程序时向Apple提供理由。
应用程序传输安全性要求2017年1月
尝试这个:
或者,作为源代码:
<key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>domain.com</key> <dict> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> <key>NSIncludesSubdomains</key> <true/> </dict> </dict> </dict>
就像它在iOS 9.1中的工作(给定你的域是正确的)。
实际上,真正的问题是,在iOS 9中,ATS例外不适用于IP地址。 它只适用于域名。 完全closuresATS是一个糟糕的主意,如果您希望在2016年12月31日之后提交给应用程序商店,将会导致您作出该决定的理由。
不幸的是,没有一个很好的解决scheme,试图获取您试图连接到的服务器的域名。
其他人已经成功地使用xip.io服务将本地IP地址“转换”为域名。 所以你可以将xip.io添加到Exception域,将NSIncludesSubdomains
设置为true。 然后当你连接到你的域名,而不是连接到52.24.145.252
你会连接到52.24.145.252.xip.io