2014-11-26 6 views
7

Die Callback-Funktion für den POST gibt null für meinen benutzerdefinierten HTTP-Header X-Auth-Token zurück. Chrome zeigt die richtigen POST-Antwortheader an, Angular.js jedoch nicht.Angular.js sagt benutzerdefinierten HTTP-Antwortheader ist null

Die einzigen, die Angular zurückgibt, sind Cache-Control und Content-Type. Alles andere zeigt null.

Dies zeigt mein Coffeescript, wie ich es bin Aufruf:

.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 

Ich habe auch versucht, frühere Versionen Angular 1.3.x ausgeführt wird, und solche, hatten das gleiche Problem.

Warum gibt Angular nur diese beiden Header zurück, wenn ich eine Anfrage mache?

+1

Sieht so aus, als müsste der Server die Erlaubnis geben, die Header zu sehen. Überprüfen Sie diese http://stackoverflow.com/questions/17038436/reading-response-headers-when-using-http-of-angularjs?rq=1 – dbugger

+0

lief es lokal; Es hat so funktioniert. Sieht so aus, als wäre das das Problem. In diesem Beispiel: "Access-Control-Expose-Header: X-Auth-Token". – Sawtaytoes

Antwort

5

Vielen Dank für diese Lösung @dbugger geht, die die Antwort kommentiert ich brauchte:

Sieht aus wie der Server die Erlaubnis geben, muss die Header zu sehen. Sehen Sie sich diese: Reading response headers when using $http of Angularjs

Der richtige Weg Header verfügbar außerhalb der lokalen Domäne zu machen, ist zu setzen: Access-Control-Expose-Headers auf Ihrem Webserver. In diesem speziellen Fall würden Sie X-Auth-Token setzen.

Verwandte Themen