Angular app $ http请求到localhost上的节点应用程序

时间:2016-05-17 21:54:47

标签: javascript angularjs node.js

我在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)浏览器开发工具,我看到了......

enter image description here

但由于某种原因,响应标签为空。当我使用浏览器发出相同的请求(http://localhost:3000/)并观看时,我会在响应标签中看到JSON。

2 个答案:

答案 0 :(得分:2)

由于评论中提到的 SLaks ,因为同源策略而发生。您的节点应用程序正在localhost:3000上运行,而您的客户端位于localhost:9000

您需要在服务器端设置Access-Control-Allow-Origin标头,以允许来自localhost:9000的请求。

答案 1 :(得分:-1)

确保您的服务器回复正确的内容类型标题:

Content-Type:application/json; charset=utf-8