在 file:/// cordova app 中获取预检问题

getting preflight issue in file:/// cordova app

我正在为 CSP 使用此元标记-

<meta http-equiv="Content-Security-Policy" content="default-src * gap: file:; style-src 'self' 'unsafe-inline'; img-src 'self' data:; script-src * 'unsafe-inline' 'unsafe-eval' ws: wss:;">

并且在尝试获取本地 html 时未加载。 在控制台中也显示错误。

[Error] Failed to load resource: Preflight response is not successful (login.html, line 0)
[Error] XMLHttpRequest cannot load file:///Users/.../Library/Developer/CoreSimulator/Devices/.../data/Containers/Bundle/Application/.../test.app/www/templates/login.html. Preflight response is not successful
    success (backbone.js:487)
    l (jquery-2.0.2.min.js:5:24887)
    fireWith (jquery-2.0.2.min.js:5:25704)
    k (jquery-2.0.2.min.js:7:4931)
    (anonymous function) (jquery-2.0.2.min.js:7:8725)

使用此代码获取本地 html(使用 backbone)-

$.get( './templates/login.html', function(data) {
  template = _.template(data);
  _this.$el.append(template);
});

更新之前上面的代码运行良好。我将 iOS 和 Cordova 更新到最新,然后我遇到了这个问题。

有什么建议吗?

这可能是由于 WKWebView 插件中的限制导致的,该插件不允许对 file:// URL 进行 XHR 请求。 CB-10143

解决此问题的一种方法是使用 local-webserver plugin 并改用 http url。

你可以试试这个forkionic团队开发的插件。我知道您没有使用 ionic,但它 应该 仍然可以与纯 cordova 应用程序一起使用,因为插件中没有特定于 ionic 的代码。他们的插件版本通过使用本地网络服务器修复了 XHR 请求的一些现有问题。