Cordova从服务器加载外部内容
Cordova load external content from server
有很多(几乎)类似的问题,但都没有解决我的问题。
我正在编写一个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="*" />
...
服务器通过标头接受cors请求(否则它可能无法在浏览器中工作):
<?php
header('Access-Control-Allow-Origin: *');
...
但斯蒂尔:科多瓦不想装载任何东西。alert(error);
-行显示:
SecurityError:无法对"XMLHttpRequest"执行"open":拒绝连接到"https://myHost.com/?someparams=foo'因为它违反了文档的内容安全策略
科多瓦有什么问题?
您可能需要在index.html中设置内容安全策略,以允许向托管您的服务的域发出请求。
<meta http-equiv="Content-Security-Policy" content="default-src 'self' <enter-your-domain-here> data: gap: https://ssl.gstatic.com;">
cordova插件白名单的自述文件中有更多示例。
有关内容安全策略元标记的更多信息,请点击此处。
基于@toskv
的答案。检查您在Cordova的HTML页面是否包含以下元标签:<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
。默认情况下,元标记由Cordova添加,并阻止CORS工作(正如您所看到的,default-src
只允许使用self
)。
使用@toskv
中的链接了解更多信息。
cordova插件白名单的自述文件中有更多示例。
有关内容安全策略元标记的更多信息,请点击此处。
- 使用javascript在Flash中加载外部图像
- 如何在运行时在angular 2中加载外部js脚本
- 我的外部js文件无法加载
- 有没有办法在tinymceiframe中加载一个外部javascript文件
- HTML外部javascript加载另一个javascript
- 什么更好?使用iframe或jQuery之类的东西在外部网站中加载HTML文件
- 更改外部加载页面的尺寸
- 将外部加载到 Iframe
- 如何在angular外部加载的页面上手动编译angular指令
- 外部加载的javascript获胜't执行
- 外部加载的SVG文件的元素id
- HTML 5 canvas从外部加载的图像中获取timagedata
- 从外部加载Highcharts配置
- JS:外部加载
- 当页面A在iframe外部加载时,重定向到页面B并在iframe中加载页面A
- 动态改变外部加载Collada文件中的Three.js纹理
- 如果选择器是从外部加载的,如何触发单击事件
- 过滤外部加载的javascript在htmlunit
- 如何访问id'外部加载的svg文件的s
- 刷新外部加载的javascript文件