我正在开发Cordova上的移动应用程序。主代码通过HTTP GET与本地服务器通信,例如:
$.get( "http://192.168.2.6:8080/getStatus.sha",
{},
function(data) {
alert ("checkIpAddress() success! Status: " + data.status);
})
.fail(function() {
alert ("checkIpAddress() failed to get url \'" + url + "\'.");
});
当我在Mozilla Firefox上运行该代码时,我得到了服务器状态(以及更多数据)。
但是当我在Android设备上运行Cordova程序时,我收到“checkIpAddress()failed”消息。
本地服务器支持CORS。 Crodova项目的config.xml具有以下设置:
<access origin="*" />
<allow-intent href="http://*/*" />
有任何修复错误的建议吗?谢谢!
答案 0 :(得分:2)
如果您使用的是Cordova 5,并且设备和服务器可以互相看到(在同一个wifi网络上),则可能需要使用内容安全策略启用此功能。请参阅Cordova Whitelist Plugin.您要考虑向
添加元标记示例配置如下:
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
根据您的应用程序执行或未执行的操作,您可能不需要上面的所有其他选项,尽管某些Ajax和模板框架会。以上适用于使用JQuery和Handlebars的Cordova 5应用程序。