【发布时间】:2018-04-19 22:42:21
【问题描述】:
我有一个使用 Corber 为 Ember-Cordova 构建的应用程序。 Xcode 9.3 版 科尔多瓦-ios@4.5.4 所有依赖项都更新到最新版本。
我正在模拟器上进行测试,因为我没有可以安装 iOS 11 的开发 iPhone。
该应用在 iOS 11.2 及更早版本上可以正常加载 - 但在 iOS 11.3 上它会卡在初始屏幕上。过了一会儿,我看到一个加载图标,但页面永远不会改变。
通过在应用程序开始加载后立即使用 Safari 进行分析,我可以看到 js 脚本和 css 没有从 /www/index.html 加载。这是我在控制台日志中看到的:
无法加载脚本 file:///Users/username/Library/Developer/CoreSimulator/Devices/07A01A47-573B-4D25-ABE3-AV9179985ABF/data/Containers/Bundle/Application/7976FE33-BLO3-21E9-A055-707AAC68468B/App%20Name.app /www/assets/vendor-e8t893cf6a6bg0f81f23d4a68ae6ffde.js。 完整性元数据检查失败。
我试图查找有关“完整性元数据检查”的信息,据我所知,iOS 正在运行它来验证正在导入的脚本的校验和。在 Xcode 中的 /www/index.html 中,我可以看到脚本标签具有“完整性”属性,即两个校验和 - 一个 sha256,一个 sha512。例如
<script src="assets/vendor-e8e903cf6a6bf0f81f23d4b68ae6ffde.js" integrity="sha256-MPm9fFc7ljuslonkMxW0TnQOAcy6KgJ4zLs+ptl/b58= sha512-oIqpQbUMPLBbSASoSCJ/+z55y2g6NlBzhTE3V+uDt8TNeJam5GAWoGT/D2u4ihIxE586JPu3c+r4GaUpjUWCAw=="></script>
所以我猜想发生的事情是 iOS 11.3 以某种方式检查文件的校验和,与它们的“完整性”属性进行比较,但没有得到匹配。有谁知道导致这种情况发生的原因以及如何解决?
注意尽管从表面上看,这与无法加载资源有关,但我认为这与内容安全策略无关——我在 /www/index.html 中尝试了内容安全策略的多次迭代——最近:
default-src * gap://ready file:; style-src 'self' 'unsafe-inline' *; script-src 'self' 'unsafe-inline' 'unsafe-eval' *
这些似乎都没有影响,如果这是一个问题,我希望看到与内容安全策略相关的错误。
【问题讨论】:
标签: ios xcode cordova ember.js