2014-11-26 20 views
7

Funkcja wywołania zwrotnego dla POST zwraca wartość null dla mojego niestandardowego nagłówka HTTP X-Auth-Token. Chrome pokazuje prawidłowe nagłówki odpowiedzi POST, ale Angular.js nie jest.Angular.js mówi, że niestandardowy nagłówek odpowiedzi HTTP ma wartość null

Jedynymi zwracanymi przez Angular są Cache-Control i Content-Type. Cała reszta pokazuje zero.

To jest moja coffeescript pokazujący jak dzwonię go:

.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 

Próbowałem też działa wcześniejszych wersjach 1.3.x kątowe, a te miały ten sam problem.

Dlaczego Angular zwraca tylko te dwa nagłówki, gdy wysyłam żądanie?

+1

Wygląda na to, że serwer musi wyrazić zgodę na wyświetlanie nagłówków. Sprawdź to http://stackoverflow.com/questions/17038436/reading-response-headers-when-using-http-of-angularjs?rq=1 – dbugger

+0

Wykonaj to lokalnie; to działało w ten sposób. Wygląda na to, że to jest problem. W tym przypadku: 'Access-Control-Expose-Headers: X-Auth-Token'. – Sawtaytoes

Odpowiedz

5

Dzięki za rozwiązanie to idzie do @dbugger kto komentuje odpowiedź mi potrzebne:

wygląda serwer musi wyrazić zgodę, aby zobaczyć nagłówki. Sprawdź to: Reading response headers when using $http of Angularjs

właściwy sposób, aby nagłówkom dostępne poza lokalnej domenie jest ustawiony: Access-Control-Expose-Headers na serwer. W tym konkretnym przypadku możesz umieścić X-Auth-Token.

Powiązane problemy