我在localhost:3000上运行nodejs应用。我有一个前端教程角度页面,像这样调用localhost ......
$scope.msg = 'requesting';
$http({
method: 'GET',
url: 'http://localhost:3000/'
}).then(function(response) {
$scope.msg = response;
}, function(response) {
$scope.msg = 'err ' + JSON.stringify(response);
});
我可以从我的节点应用程序的控制台上看到它正在回答200和一个json对象{foo:'bar'}
。但$scope.msg
变量最终看起来像这样......
err {
"data":null,
"status":-1,
"config":{
"method":"GET",
"transformRequest":[
null
],
"transformResponse":[
null
],
"url":"http://localhost:3000/",
"headers":{
"Accept":"application/json, text/plain, */*"
}
},
"statusText":""
}
当服务器产生良好响应时,客户为什么会认为存在问题?在浏览器中运行请求可以正常工作。
加载角度页面(http://localhost:9000)浏览器开发工具,我看到了......
但由于某种原因,响应标签为空。当我使用浏览器发出相同的请求(http://localhost:3000/)并观看时,我会在响应标签中看到JSON。
答案 0 :(得分:2)
由于评论中提到的 SLaks ,因为同源策略而发生。您的节点应用程序正在localhost:3000
上运行,而您的客户端位于localhost:9000
。
您需要在服务器端设置Access-Control-Allow-Origin
标头,以允许来自localhost:9000
的请求。
答案 1 :(得分:-1)
确保您的服务器回复正确的内容类型标题:
Content-Type:application/json; charset=utf-8