我使用AngularJS$http发送http Get Request。
$http({
method: 'get',
url: 'http://cross-domain-url/api/v1/service1',
params : {'key1' : 'value1'},
data:'',
headers : {'Accept': 'application/JSON',
'Content-Type' : 'application/JSON'},
cache : false
}).then(function (response) {
$waitDialog.hide();
return response;
});
但这导致了以下错误"访问控制允许起源不允许起源本地主机。"
但当我将方法更改为JSONP时,我得到了正确的响应,但该响应是XML的。由于不能使用JSONP设置内容类型,并且该API默认使用application/xml类型。是否有任何方法可以向返回XML数据的第三方API请求数据?
p.S:由于第三方由其他人控制,所以我无法更改数据的默认响应类型。
替代方案是使用$resorce
$http.defaults.useXDomain = true;
var Srv = $resource('http://cross-domain-url/api/v1/service1', {
key1: '@key'
});
Srv.get({
key: 'value1'
}, function(data) {
...
}, function(error) {
...
});
将方法更改为'JSONP'而不是'GET',或者放入一个新键:value"dataType":"JSONP"
在这里,我给出了代码。。。
$http({
method: 'JSONP',
url: 'http://cross-domain-url/api/v1/service1',
params : {'key1' : 'value1'},
data:'',
headers : {'Accept': 'application/JSON',
'Content-Type' : 'application/JSON'},
cache : false
}).then(function (response) {
$waitDialog.hide();
return response;
});