Javascript Cordova从服务器加载外部内容

Javascript Cordova从服务器加载外部内容,javascript,jquery,ajax,cordova,Javascript,Jquery,Ajax,Cordova,有许多(几乎)类似的问题,但没有一个解决了我的问题 我正在编写一个cordova应用程序(目前仅在andoid和ios上测试),并希望从我的Web服务器加载数据(JSON格式)。我使用jQuerys$.ajax-方法来实现这一点 到目前为止,我的代码是: $.support.cors = true; var ret = -1; $.ajax(url, { traditional: true, type: 'POST', url: url, contentType:

有许多(几乎)类似的问题,但没有一个解决了我的问题

我正在编写一个cordova应用程序(目前仅在andoid和ios上测试),并希望从我的Web服务器加载数据(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="*" />
...
。。。
'因为它违反了文档的内容安全策略


cordova对此有什么问题?

您可能必须在index.html中设置内容安全策略,以允许向托管您的服务的域发出请求


的自述有更多的例子


可以找到有关内容安全策略元标记的更多信息

基于
@toskv
的答案。检查Cordova中的HTML页面是否包含以下元标记:
。默认情况下,元标记由Cordova添加,并阻止CORS工作(如您所见,
default src
只允许
self

使用
@toskv
中的链接了解更多信息

的自述有更多的例子

可以找到有关内容安全策略元标记的更多信息


您是否尝试过在应用程序的index.html中设置meta标记以允许访问您想要的url?不,我不知道您也必须在html文件中这样做。你能给我举个例子说明如何做到这一点吗?我对一个ionic应用程序也必须这样做,我记得它需要CSP才能工作。I检查我添加的答案。:)这段代码似乎不起作用,而且它还阻止了eval函数,这将迫使我重构代码:/n我只想启用与一台主机的通信,而不需要其他安全规则。可悲的是,我真的不懂自述。你能再帮我一次吗?那个元标记看起来怎么样?我编辑了答案,希望能有所帮助。此外,您可能希望将withCredentials字段设置为true.:)嘿,我注意到对我来说问题在于默认情况下meta标签在那里。如果你移除meta标签,一切都像一个符咒!就这样!实际上已经有了这个元标记。。。我想你有时候应该早点睡觉,第二天再看看这个问题:)
<?php
header('Access-Control-Allow-Origin: *');
...