在前几天,每当我想检索数据时,不需要添加NSAppTransportSecurity,将NSAllowsArbitraryLoads键设置为info.plist中的YES,但现在如果要通过网络运行应用程序,则必须添加它。
为何要这样做?它有多有用?它的用途是什么?
有人能帮忙吗拜托?
发布于 2015-10-20 16:51:37
应用程序传输安全是在将应用程序连接到web时引入iOS9作为附加安全功能的。
来自苹果公司的文件:
App传输安全是一种提高应用程序和web服务之间连接安全性的功能。该特性由符合安全连接最佳实践的默认连接要求组成。应用程序可以覆盖此默认行为并关闭传输安全性。
其中一个要求是所有连接都必须使用HTTPS。这就是为什么所有只使用HTTP的连接都会在iOS9上失败。
如果您使用的是通过HTTPS不可用的服务,则仍然可以通过覆盖来使用它。这就是您的NSAppTransportSecurity文件中的Info.plist字典的用途。在这里,您可以定义要覆盖的应用程序传输安全性要求。
例如,NSAllowsArbitraryLoads禁用对任何域的所有安全要求。您可以在NSExceptionDomains字典中定义异常,但是如果不这样做,所有域都可以在没有的情况下连接到应用程序。
当您想要连接到不使用HTTPS的单个域时,您不应该使用NSAllowsArbitraryLoads,因为这将禁用all all域的安全性。相反,您应该只针对这一个域专门重写HTTPS要求。
您可以在Info.plist文件中这样做:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>yourdomain.com</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>总结一下: App传输安全性是一件好事,因为它鼓励您使用比普通HTTP连接更安全的HTTPS连接。因为您不能总是使用HTTPS,所以它为您提供了允许不安全连接的机会。很好的做法是,只在需要它们的地方使用这些安全性。
https://stackoverflow.com/questions/33234717
复制相似问题