【问题标题】:Angular.js saying custom HTTP response header is nullAngular.js 说自定义 HTTP 响应标头为空
【发布时间】:2015-01-24 04:36:45
【问题描述】:

POST 的回调函数为我的自定义 HTTP 标头 X-Auth-Token 返回 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 在我发出请求时只返回这两个标头?

【问题讨论】:

  • 看起来服务器需要授予查看标头的权限。看看这个stackoverflow.com/questions/17038436/…
  • 本地运行;它就是这样工作的。看起来就是这个问题。在这种情况下:Access-Control-Expose-Headers: X-Auth-Token.

标签: javascript angularjs


【解决方案1】:

感谢@dbugger 提供此解决方案,他评论了我需要的答案:

看起来服务器需要授予查看标头的权限。看看这个:Reading response headers when using $http of Angularjs

使标头在本地域之外可用的正确方法是在您的网络服务器上设置:Access-Control-Expose-Headers。在这种特殊情况下,您可以输入X-Auth-Token

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-29
    • 2016-05-27
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 2015-07-16
    相关资源
    最近更新 更多