我目前正在开发一个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
答案 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)