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

rac*_*arl 3 ajax uiwebview ios cordova wkwebview

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

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

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

我的 config.xml 包括:

<access origin="*" />
Run Code Online (Sandbox Code Playgroud)

我的 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:;">
Run Code Online (Sandbox Code Playgroud)

jce*_*ile 6

你读过Limitations文档的部分吗?

如果您从 UIWebView 升级,请注意我们的问题跟踪器中概述的使用 WKWebView 的限制。

我认为你的问题是WKWebView 受 CORS 的影响

所以你必须Access-Control-Allow-Origin: *在服务器上设置

例子