【问题标题】:Would it be necessary for ios webview to use https when Apple requiring mandatory use of https?当苹果要求强制使用 https 时,ios webview 是否需要使用 https?
【发布时间】:2017-10-26 20:54:18
【问题描述】:

目前情况:

  1. 前不久,苹果推迟强制使用https
  2. 我们的应用程序 已经发布,没有完全强制使用https。因为有些 webView 中的请求尚不支持 https。

问题:

  1. 如果需要使用 https,我可以 通过设置“Allow Arbitrary Loads in Web 内容”设置为“是”并将“允许任意加载”设置为 “否”?
  2. 此外,该要求是否会影响具有 已经发布了吗?

【问题讨论】:

  • 您可以将异常域添加到您的 info.plist,因此只需将它们添加到那里。

标签: ios webview https app-transport-security


【解决方案1】:

如果您使用 UIWebViews 或 WKWebViews,您可以使用 NSAllowsArbitrartyLoadsInWebContent 异常来允许您的 webviews 中的任何 http 连接。但是请注意,这仅对运行 iOS 10 及更高版本的设备有所帮助。如果您的应用支持 iOS9,并且您仅包含 Web 内容例外,则 iOS 9 用户将无法加载使用 http 的网站。为了支持两者,Apple 提供了一个组合,您可以在 Info.plist 中设置 both NSAllowsArbitrartyLoadsInWebContent NSAllowsArbitrartyLoads。这基本上会在 iOS 9 设备上禁用 App Transport Security (ATS),但在 iOS 10 中,NSAllowsArbitrartyLoadsInWebContent 设置将覆盖NSAllowsArbitrartyLoads 设置,这意味着 http 和非 ATS 兼容的连接将只允许在 WebViews 中使用。

我建议如果您允许用户在您的应用程序中对任意网站进行 Web 浏览,您应该考虑切换到 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 会希望您解释为什么您可能会通过与服务器进行不安全的通信而使您的用户处于危险之中.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 2011-11-04
    • 2018-09-09
    相关资源
    最近更新 更多