1

我目前正在使用前端的AngularJS和后端的NodeJS和express开发一个Web应用程序。但是,我在从前端请求我的后端 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 或浏览器请求后端时,我会返回测试字典。前端似乎能够访问后端,因为我在后端日志中看到它已经完成了请求并得到了一些东西,但是萤火虫说响应是空的,我该怎么办?

非常感谢,如果您需要我提供更多信息,请告诉我。

马蒂亚斯

4

3 回答 3

2

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

Access-Control-Allow-Origin: *

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

res.set('Access-Control-Allow-Origin', '*');
于 2013-11-06T20:07:46.493 回答
1

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

于 2015-04-22T08:43:00.477 回答
0

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

于 2016-09-09T09:50:36.213 回答