Ajax 在 iOS 上使用 Cordova WKWebView 插件时调用失败,HTTP 状态为 0

Ajax call fails with HTTP status 0 when using Cordova WKWebView plugin on iOS

我一直在尝试更新我的 Cordova iOS 应用程序以使用新的 WKWebView 可插入 Web 视图,但我 运行 遇到无法进行 ajax 调用的问题安装时。当我尝试进行以下调用时,我得到 HTTP 状态 0 的错误结果:

return Promise.resolve($.ajax({
        url: 'https://mytestserver.com/settings',
        timeout: 10000 
    }))

我在 iOS 平台 4.0.0 上使用 Cordova 5.4.1,我的测试设备是 运行ning iOS 9.2。一旦我删除 WKWebView 插件并且 Cordova 恢复到 UIWebView,此代码就会按预期工作。我尝试过使用和不使用白名单插件 (1.2.0)。

我的 config.xml 包括:

<access origin="*" />

我的 index.html CSP 标签是:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: cdvfile: https://ssl.gstatic.com 'unsafe-inline'; style-src 'self' 'unsafe-inline'; media-src *; img-src *; connect-src https: blob: 'self'; object-src 'self' blob:;">

您是否阅读了文档的 Limitations 部分?

如果您是从 UIWebView 升级,请注意 our issue tracker 中概述的使用 WKWebView 的限制。

我认为你的问题是WKWebView is affected by CORS

所以你必须在服务器

上设置Access-Control-Allow-Origin: *

Examples

在 index.html 中,ajax 可以正常工作,但在其他 html 文件中不能正常工作,因此我不得不使用母版页之类的索引来修改应用程序和应用程序的其他文件工作。