angularjs - 使用 Angular JS 调用 Restful API 的跨域问题

标签 angularjs

我正在尝试访问一个 Restful API。这给出了错误。如何克服这个跨域问题?

错误是 'Access-Control-Allow-Origin' header is present on the requested resource

function Hello($scope, $http) {

$http.get('http://api.worldweatheronline.com/free/v1/weather.ashx?q=London&format=json&num_of_days=5&key=atf6ya6bbz3v5u5q8um82pev').
    success(function(data) {
        alert("Success");
    }).
    error(function(data){
       alert("Error");
    });
}

这是我的 fiddle http://jsfiddle.net/U3pVM/2654/

最佳答案

执行此操作的更好方法( fiddle example )是使用 $http.jsonp .

var url = 'http://api.worldweatheronline.com/free/v1/weather.ashx';
return $http.jsonp(url, {
    params: {
        callback: 'JSON_CALLBACK',
        q: 'London',
        format:'json',
        num_of_days: 5,
        key: 'atf6ya6bbz3v5u5q8um82pev'
    }
});

注意 JSON_CALLBACK我添加的查询字符串参数。在幕后,angular 使用它来为您设置回调。没有它就会坏掉。

关于angularjs - 使用 Angular JS 调用 Restful API 的跨域问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21154189/

相关文章:

javascript - 如何在angularjs中仅调用一个ng-model

angularjs - AngularJS/Ionic中的深层链接示例

javascript - angularjs ng-重复一长串无序列表

javascript - Angular JS UI Bootstrap Datepicker : max-date and init date issue

angularjs - 在 AngularJS 中观察模型变化时如何忽略初始负载?

angularjs - 如何限制 Angular $q promise 并发?

angularjs - 对当前范围之外的元素使用 $setValidity

javascript - 如何在 Angular http请求的错误和成功回调之间共享变量

javascript - Angular 错误 : [$injector:modulerr] 1. 4.5

javascript - AngularJS: Uncaught Error :[$injector:modulerr]