【问题标题】:App Transport Security not working on Distribution应用程序传输安全不适用于分发
【发布时间】:2017-06-27 19:39:52
【问题描述】:

我已经为我的 iPad 应用程序设置了应用程序传输安全性,并为少数开放的 api (如天气在线流量等)设置了例外域,我们将其显示在 cordova webview 中。如果我直接在 iPad 上运行它,它工作正常。但是如果我存档和分发它,它就不能正确加载。

有什么想法吗?

【问题讨论】:

  • 您没有单独的 Info.plist 文件用于调试打包而不是用于生产,是吗?在项目的 Build 设置中有一个 info.plist 文件设置。此外,NSAllowsArbitraryLoadsInWebContent 仅适用于 iOS10。您是通过临时资料还是企业资料进行分发?
  • 企业简介
  • 您是否在进行本地测试的同一台设备上运行部署了企业发行版?相同的 iOS 版本?
  • 我在同一个设备和不同设备上都试过了..它没有用..

标签: ios ipad uiwebview app-transport-security


【解决方案1】:

实际上,您似乎错误地添加了异常域。不要在您的异常域条目中包含 http://。

您是否在 iOS 10 设备上进行本地测试(该设备将使用 NSAllowsArbitraryLoadsInWebContent 完全忽略 Web 视图中的 ATS)?它可以在 iOS 10 设备上运行,但可能由于设备是 iOS9,企业分发在设备上失败,它会尝试使用格式不正确的异常域。

行为差异的另一个可能原因是您为调试和发布版本指定了不同的 Info.plist。在您的项目设置中验证您是否为两个构建配置引用了相同的 Info.plist 文件。

【讨论】:

  • 所以如果我想同时支持 iOS9 和 iOS10,我不应该添加 NSAllowsArbitraryLoadsInWebContent 是吗?只需列出异常域.. 对吗?
  • 如果您知道可以在 web 视图中访问的所有域(即用户可以任意导航到您无法控制的站点),我会坚持使用例外域并删除 NSAllowsArbitraryLoadsInWebContent 键。 iOS9 和 iOS10 都支持异常域。您可以添加NSAllowsArbitraryLoadsInWebContent,但它不会影响 iOS 9 设备。因此,如果您没有所有的异常域,webview 将在 iOS 9 上中断
  • 如果您需要同时支持两者,并且由于用户可以浏览到您无法控制的站点而无法添加例外域,您应该同时添加NSAllowsArbitraryLoadsInWebContentNSAllowsArbitraryLoads。在 iOS9 中,它将禁用所有 ATS 检查(在 webviews 和其他情况下),但在 iOS 10 中,它将忽略 NSAllowsArbitraryLoads 并使用 NSAllowsArbitraryLoadsInWebContent 键,因此任何非 webview 流量仍将强制执行 ATS,但 webview 内容将忽略 ATS 规则。您需要在提交时向 Apple 提供理由(不久之后)
猜你喜欢
  • 2016-01-08
  • 2016-01-04
  • 2017-04-15
  • 2016-02-09
  • 2015-11-15
  • 1970-01-01
  • 2016-06-07
  • 2016-01-05
相关资源
最近更新 更多