0

HTTP Get Request の送信に AngularJS $http を使用しています。

$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;
});

しかし、これにより、「Origin localhost is not allowed by Access-Control-Allow-Origin.」というエラーが発生します。

しかし、メソッドを JSONP に変更すると、正しい応答が得られますが、その応答は XML です。content-type は JSONP を使用して設定できないため、その API はデフォルトで application/xml タイプを使用します。XML でデータを返すサードパーティ API からデータを要求する方法はありますか。?

PS: 第三者が他の誰かによって制御されているため、データのデフォルトの応答タイプを変更することはできません。

4

2 に答える 2

0

代替手段は使用することです$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) {
    ...
});
于 2013-08-06T00:45:55.890 に答える
0

メソッドを 'GET' ではなく 'JSONP' に変更するか、新しい key: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;
});
于 2016-04-30T06:59:18.197 に答える