来自AngularJS的NodeJS HTTP请求
我目前正在开发一个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 :
Error! 0 :
但是,当我通过curl或浏览器请求后端时,我会得到testing代码。 虽然前端似乎能够访问后端,因为我看到它在我的后端日志中,它已经完成了一个请求,并返回一些东西,但萤火虫说,响应是空的,我该怎么办?
非常感谢,让我知道如果你需要我的更多信息。
马蒂亚斯
确保您的前端和后端服务器具有相同的来源(协议,主机和端口)。 如果不是这样,那么你就不会收到回应,因为你发出了异源的ajax请求。 在这种情况下,你应该从你的后端发送特殊的头文件来允许它:
Access-Control-Allow-Origin: *
您可以添加以下代码的响应标题:
res.set('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Origin','*');
使用res.status(status).json(obj)
而不是res.json(status, obj)