【发布时间】:2026-02-15 16:00:01
【问题描述】:
有很多(几乎)类似的问题,但没有一个能解决我的问题。
我正在编写一个cordova 应用程序(目前仅在andoid 和ios 上进行测试),并且想从我的网络服务器加载数据(JSON 格式)。我使用 jQuerys $.ajax - 方法。
到目前为止我的代码:
$.support.cors = true;
var ret = -1;
$.ajax(url, {
traditional: true,
type: 'POST',
url: url,
contentType: 'text/plain',
xhrFields: {
withCredentials: false
},
data: dataString,
success: function (data) {
alert('Data recieved:');
alert(data);
ret = data;
},
error: function (xhr, ajaxOptions, error) {
alert('There was an error');
alert(error);
alert(xhr.status);
}
});
return ret;
这适用于浏览器(在最新的 Firefox 中测试),但不适用于应用程序。该错误似乎与跨源页面加载有关。
我的 config.xml 如下所示:
...
<plugin name="cordova-plugin-whitelist" spec="1" />
<access origin="*" />
...
服务器正在通过标头接受 cors-requests(否则它可能无法在浏览器中工作):
<?php
header('Access-Control-Allow-Origin: *');
...
但仍然:cordova 不想加载任何东西。 alert(error); - 行显示:
SecurityError: 无法对“XMLHttpRequest”执行“open”:拒绝连接到“https://myHost.com/?someparams=foo”,因为它违反了文档的内容安全策略
cordova 有什么问题?
【问题讨论】:
-
您是否尝试过在应用程序的 index.html 中设置元标记以允许访问您想要的 url?
-
不,我不知道您还必须在 html 文件中执行此操作。你能给我举个例子吗?
-
对于离子应用程序我也必须这样做,我记得它需要 CSP 才能工作。我检查我添加的答案。 :)
标签: javascript jquery ajax cordova