Angularjs 使用restanglar的跨域调用

Angularjs 使用restanglar的跨域调用,angularjs,restangular,Angularjs,Restangular,以下电话在AngularJS中对我有效: var baseUrl = 'http://aaa.com/'; return $http.jsonp(baseUrl + 'root/' + path + '?action=doit&callback=JSON_CALLBACK'; 现在,我决定尝试使用Restanglar,并将其替换为以下内容: return Restangular.all('root/' + path).getList({action: 'doit', callback:

以下电话在AngularJS中对我有效:

var baseUrl = 'http://aaa.com/';
return $http.jsonp(baseUrl + 'root/' + path + '?action=doit&callback=JSON_CALLBACK';
现在,我决定尝试使用Restanglar,并将其替换为以下内容:

return Restangular.all('root/' + path).getList({action: 'doit', callback: 'JSON_CALLBACK'} );
但我得到了一个错误:

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:9000' is therefore not allowed access.
我做错了什么

我正在初始化Restanglar,如下所示:

.config(function(RestangularProvider) {
 RestangularProvider.setBaseUrl('http://aaa.com/');
 RestangularProvider.setDefaultRequestParams('jsonp', {callback: 'JSON_CALLBACK'});
});

要启用CORS,您必须进行以下更改。不要忘记服务器端也需要支持CORS

在app.js中插入httpProvider并执行以下操作

$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];

嗯,您的呼叫没有作为jsonp请求发送,但我不知道为什么。我会启动你的调试器,确保调用以你期望的方式进行,并且你的参数得到尊重。