$ http - 没有返回的标题 - AngularJS

时间:2017-01-02 00:13:23

标签: javascript angularjs json node.js

我有一个Angular服务我正在尝试设置从服务JSON文件的节点服务器检索数据到应用程序。我检查了节点服务器URL,他们都输出了JSON,但是由于HTTP头,Angular似乎无法获取它们。从一些谷歌搜索看起来这是一个常见的问题,我只是不确定如何,甚至是否有解决方法?

eventsApp.factory('eventData', function($http, $log) {
    return {
        getEvent: function(successcb) {
            $http({method: 'GET', url: 'http://localhost:8000/data/event/1'}).
                success(function(data, status, headers, config){
                    successcb(data);
                }).
                catch(function(data, status, headers, config){
                    $log.warn(data, status, headers, config);
                })
        }
    }
});

在控制台中,我从catch中收到以下警告:

  

Object {data:null,status:0,headers:headersGetter /<(),config:Object,statusText:“”} undefined undefined undefined

1 个答案:

答案 0 :(得分:1)

来自documentation

// Simple GET request example:
$http({
  method: 'GET',
  url: '/someUrl'
}).then(function successCallback(response) {
    // this callback will be called asynchronously
    // when the response is available
  }, function errorCallback(response) {
    // called asynchronously if an error occurs
    // or server returns response with an error status.
  });

响应对象具有以下属性:

  
      
  • data - {string|Object} - 使用。转换的响应主体   变换函数。
  •   
  • status - {number} - HTTP的状态代码   响应。
  •   
  • 标题 - {function([headerName])} - 标题获取功能。
  •   
  • config - {Object} - 用于生成的配置对象   请求。
  •   
  • statusText - {string} - 响应的HTTP状态文本。
  •   

所以你应该能够使用以下方式获得感兴趣的标题:

response.headers('header-name')

根据你的回复日志:result.data为空。因此,您应该检查Network的{​​{1}}标签,并检查服务器的aqtual http响应。

Chrome Dev Tools 0表示可能存在CORS问题。因此,如果您的角度应用程序托管在您尝试发送http请求的服务器上的其他主机或端口(在您的情况下为localhost:8000),那么您应该配置 SERVER 以允许CORS请求。