现状:
问题:
答案 0 :(得分:0)
如果您使用的是UIWebViews或WKWebViews,则可以使用NSAllowsArbitrartyLoadsInWebContent
例外来允许Web视图中的任何http连接。但请注意,这只会对运行iOS 10及更高版本的设备有所帮助。如果您的应用支持iOS9,并且您只包含网络内容例外,则iOS 9用户将无法加载使用http的网站。为了支持这两者,Apple可以在Info.plist中设置 NSAllowsArbitrartyLoadsInWebContent
和 NSAllowsArbitrartyLoads
。这将基本上禁用iOS 9设备上的App Transport Security(ATS),但在iOS 10中,NSAllowsArbitrartyLoadsInWebContent
设置将覆盖NSAllowsArbitrartyLoads
设置,这意味着只允许http和非ATS兼容的连接网页视图。
我建议如果您允许用户对应用内的任意网站进行网页浏览,则应考虑切换到SFSafariViewController。它不需要任何ATS例外,因为它实际上是在您的应用程序中嵌入Safari,但作为一个单独的过程。如果您无法控制用户可以访问的网站,则可以提供灵活性,同时为他们提供最佳体验。
对于已经存储在商店中的应用程序:如果应用程序是在iOS 9之前使用基本SDK编译的,那么ATS保护措施就不会出现。应用程序应该可以在iOS 9和iOS 10上正常运行。您可以确认通过在iOS 9或10设备上从App Store安装应用程序并确认您可以访问http:// URL。
了解Apple并没有延迟使用https的要求 - 对于使用iOS9或更高版本的SDK编译的应用程序,ATS在运行iOS 9及更高版本的设备上处于活动状态。他们推迟的是在使用NSAllowArbitraryLoads
例外时需要提供理由。当您将应用程序提交给Apple时,将完成该检查。商店中现有的应用程序不会受到影响,只是如果您需要上面列出的例外之一,您需要有理由禁用ATS的各个方面。如果商店中的当前应用程序使用NSAllowsArbitraryLoads
例外,您已经为您的应用程序禁用了ATS,并且在某些时候,Apple会要求您解释为什么您可能通过进行不安全的通信而使您的用户面临风险与服务器。