来自AngularJS的NodeJS HTTP请求

时间:2013-11-06 19:41:39

标签: javascript node.js angularjs express

我目前正在开发一个Web应用程序,使用AngularJS在前端,NodeJS在后端使用express。我无法从前端请求我的后端API,并希望你们能帮助我。

后端(NodeJS):

app.get('/test', function(req, res) {
    res.json(200, {'test': 'it works!'})
})

前端(AngularJS):

myApp.controller('myController', function($scope, $http) { 
    delete $httpProvider.defaults.headers.common["X-Requested-With"]
    $http.get('http://localhost:5000/test').success(function(data) {
        alert('Success')
    }).error(function(data, status) {                                            
        alert('Error! ' + status + ' : ' + data)                                  
    })        
})

当我刷新应用程序时,我会收到一条警告:Error! 0 :,但是,当我通过curl或浏览器请求后端时,我会收到测试字典。前端似乎能够访问后端,因为我在后端日志中看到它已经完成了请求并得到了回复,但是firebug说响应是空的,我该怎么办?

非常感谢,如果您需要我提供更多信息,请与我联系。

的Mattias

3 个答案:

答案 0 :(得分:2)

确保您的前端和后端服务器具有相同的来源(协议,主机和端口)。如果没有,那么你就不会收到回复,因为你提出了跨域的ajax请求。在这种情况下,您应该从后端发送特殊标题以允许它:

Access-Control-Allow-Origin: *

您可以使用以下代码添加响应标头:

res.set('Access-Control-Allow-Origin', '*');

答案 1 :(得分:1)

res.setHeader('Access-Control-Allow-Origin','*');

答案 2 :(得分:0)

使用res.status(status).json(obj)代替res.json(status, obj)