在阅读了Apple和众多Apple论坛文章之后,我仍然不清楚您是否需要任何ATS豁免才能对本地网络机器进行安全(TLS/HTTPS)调用(不合格域,例如:https://MyServer:9000)。这位医生的部分内容如下:
远程和本地连接应用程序传输安全( ATS )中的ATS可用性仅适用于对公共主机名的连接。该系统不为下列连接提供安非他明类兴奋剂保护:
若要连接到不合格主机名或.local域,必须将NSAllowsLocalNetworking键的值设置为“是”。
注意:虽然ATS不强制用于连接本地主机,但Apple强烈建议对任何本地连接使用传输层安全(TLS),同时使用自签名证书来验证本地IP地址。
那么,我是否需要添加NSAllowsLocalNetworking,即使是为了使已经符合ATS(前向保密,TLS 1.2等)的安全连接到不合格的主机名(私有本地服务器)?还是只需要NSAllowsLocalNetworking才能进行un安全本地呼叫?
发布于 2017-06-13 21:04:40
NSAllowsLocalNetworking密钥用于为本地网络呼叫请求ATS异常。如果您的本地服务器与ATS兼容,则不需要添加异常。这很简单,足以证实。只需在iOS 10设备上运行应用程序,Info.plist中就没有例外。如果连接在设备上成功,则您知道不存在导致问题的ATS违规行为。如果它不起作用,您很可能违反了ATS的一项要求(尽管您似乎已经验证了一些有关ATS遵从性的高级别要求)。
如果您确实失败了,您可以测试该URL是否符合ATS的要求,如下所示:在Mac上使用nscurl --ats-diagnostics <url>命令。您可以了解更多关于ATS的信息,以及如何在这个职位中使用/解释上面的nscurl命令的结果。
请注意,NSAllowsLocalNetworking异常是在iOS 10中添加的,因此将其包含在构建中并在iOS 9设备上运行将不会导致任何更改。如果您最终需要它,并且需要支持iOS 9,那么您需要在您的Info.plist中添加( NSAllowsLocalNetworking和NSAllowsArbitraryLoads )。在iOS 10上,它只对本地连接禁用ATS,但是在iOS9设备(不支持NSAllowsLocalNetworking条目)上,ATS将被全面禁用。
https://stackoverflow.com/questions/44530671
复制相似问题