我在Cordova中创建Android应用程序使用AngularJs消耗REST服务, 我首先在浏览器上通过此URL测试此应用程序 file:/// C:/Users/Users/MyApps/project/platforms/android/assets/www/index.html#/demande/list但是stil给出了这个错误:
阻止跨源请求:同源策略禁止读取远程资源 http://10.0.2.2:8080/springrestprojet/rest/demande。原因:CORS请求失败。
我正在使用CORS过滤器来启用访问权限。 这是我的service.js代码:
'use strict';
angular.module('workflowService', ['ngResource']).
factory('Demande', function ($resource) {
return $resource('http://10.0.2.2:8080\:8080/springrestprojet/rest/demande/:id', {}, {
'save': {method:'PUT',
headers: {'Content-Type': 'application/json',
'Access-Control-Allow-Origin':'*',
'Access-Control-Allow-Methods' : 'POST, GET, OPTIONS, PUT',
'Access-Control-Request-Method':'*',
'Access-Control-Allow-Headers':'*',
'Accept': 'application/json'}},
});
});
请帮忙吗? 非常感谢。
答案 0 :(得分:0)
几个月后,access origin="*"
还不够。
尝试安装此插件sudo cordova plugin add https://github.com/apache/cordova-plugin-whitelist
然后,在config.xml
中添加一行
<allow-navigation href="*" />
*
并非推荐,但它适用于所有事情。您可以指定此http://yourWebSite.com/*
答案 1 :(得分:-1)
我怀疑在最新版本中,插件cordova-plugin-whitelist需要在项目的每个html文件中配置元http-equiv =“Content-Security-Policy”。
对于第一个版本,它只显示警告,但考虑到这里看到的几个问题,可能行为已经改变......
所以你有两个解决方案:
有关Raymond Camden's blog或in the plugin's documentation的更多信息。
编辑:现在我记得,并不是它在最新版本中更改了内容安全策略在Android上以Kit-Kat开头检查,因此与cordova-plugin-whitelist相同的应用程序没有配置CSP可以在android&lt; 4.4并且在4.4+中失败。
请注意所有cordova / phonegap开发人员,在kitkat或lolypop中测试您的CSP代码,否则您可能会有惊喜!