【发布时间】:2015-05-25 21:39:32
【问题描述】:
我正在尝试使用 AngularJS 访问 API。我已经使用以下节点代码检查了 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");
});
});
我使用节点 http-server 运行我的 Angular 应用程序,并带有以下参数
"start": "http-server --cors -a localhost -p 8000 -c-1"
我的角度控制器如下所示
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 错误。 我的应用在本网站(如下)上针对 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'];
});
【问题讨论】:
标签: javascript angularjs node.js cors