Angular.js称自定义HTTP响应头为空

8

我的自定义HTTP头X-Auth-Token的POST回调函数返回null。Chrome浏览器显示正确的POST响应头,但是Angular.js没有。

Angular只返回Cache-Control和Content-Type,其他所有内容都为null。

这是我调用它的CoffeeScript代码:

.factory 'loginFactory', ($rootScope, $http, $resource) ->
    $resource '/api/auth/login',
        email: '@id'
        password: '@id'

.controller 'userController', ($scope, $state, $http, loginFactory, userService) ->
    $scope.validationError = false
    $scope.user =
        email: ''
        password: ''

    $scope.loginUser = ->
        loginFactory.save $scope.user, (u, headers) ->
            console.log headers('X-Auth-Token')
        .$promise.then (response) ->
            unless response.error
                userService.login($scope.user.email, $scope.user.password)

                unless userService.redirIfLoggedIn()
                    $scope.validationError = true

我还尝试运行早期版本的Angular 1.3.x,但遇到了同样的问题。

为什么当我发出请求时Angular只返回这两个头信息?


1
似乎服务器需要授权才能查看标头。请参阅此https://dev59.com/RWQn5IYBdhLWcg3wLkkd?rq=1 - dbugger
在本地运行它,那样它就能正常工作。看起来这就是问题所在。在这种情况下:Access-Control-Expose-Headers: X-Auth-Token - Kevin Ghadyani
1个回答

7
感谢@dbugger提供的解决方案,帮我找到了答案:
看起来服务器需要给予权限才能查看头文件。请参考这个链接:Reading response headers when using $http of Angularjs 让头文件在本地域之外可用的正确方法是在您的Web服务器上设置:Access-Control-Expose-Headers。在这种特殊情况下,您应该放置X-Auth-Token

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接