Http Get-Request和JSONP不工作

Http Get Request and JSONP not working

本文关键字:工作 JSONP Get-Request Http      更新时间:2023-09-26

我使用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;
});