我正在尝试使用AngularJS访问API。我已经使用以下node代码检查了API的功能。这排除了故障原因。
var http = require("http");
url = 'http://www.asterank.com/api/kepler?query={"PER":{"$lt":1.02595675,"$gt":0.67125}}&limit=10';
var request = http.get(url, function (response) {
var buffer = ""
response.on("data", function (chunk) {
buffer += chunk;
});
response.on("end", function (err) {
console.log(buffer);
console.log("\n");
});
});
我使用Node http-server运行我的Angular应用程序,参数如下:
"start": "http-server --cors -a localhost -p 8000 -c-1"
我的Angular控制器如下所示:
app.controller('Request', function($scope, $http){
// functional URL = http://www.w3schools.com/website/Customers_JSON.php
$scope.test = "functional";
$scope.get = function(){
$http.get('http://www.asterank.com/api/kepler?query={"PER":{"$lt":1.02595675,"$gt":0.67125}}&limit=10',{
params: {
headers: {
//'Access-Control-Allow-Origin': '*'
'Access-Control-Request-Headers' : 'access-control-allow-origin'
}
}
})
.success(function(result) {
console.log("Success", result);
$scope.result = result;
}).error(function() {
console.log("error");
});
// the above is sending a GET request rather than an OPTIONS request
};
});
控制器可以解析w3schools的URL,但是当传递asterank的URL时,它始终会返回CORS错误。
通过Firefox检查GET请求显示,标题没有被添加到GET请求。但除此之外,我不知道如何解决这个问题。对于正在学习Angular的人,希望得到帮助。
我尝试使用$http.jsonp()。GET请求成功执行(在网络上),但angular方法返回.error()函数。
var app = angular.module('sliderDemoApp', ['ngSlider', 'ngResource']);
.config(function($httpProvider) {
//Enable cross domain calls
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
});