2015-11-19 5 views
0

J'utilise angular JS pour me connecter à mon application. Sur le serveur, il renvoie un X-AUTH-TOKEN. Quand je fais une requête JSON. La réponse de l'en-tête ressemble à ceci ...X-AUTH-TOKEN renvoie null même s'il est présent dans l'en-tête

Pragma: no-cache 
Date: Thu, 19 Nov 2015 12:44:05 GMT 
X-Content-Type-Options: nosniff 
Server: Apache-Coyote/1.1 
X-Frame-Options: DENY 
Access-Control-Max-Age: 3600 
Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE 
Access-Control-Allow-Origin: chrome-extension://gmodihnfibbjdecbanmpmbmeffnmloel 
Cache-Control: no-cache, no-store, max-age=0, must-revalidate 
X-AUTH-TOKEN: eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJiaWxseWpvZSJ9.le0y_pOfQAyLJO4IJ4ZjQQqgqgiN2xtpLAzORawoDm4O4euHFh32LtjMrBUTkr8G2LeY_2bALe_rcm3LY_NlSg 
Access-Control-Allow-Credentials: true 
Access-Control-Allow-Headers: Content-Type, Accept, X-Requested-With, remember-me 
Content-Length: 88 
X-XSS-Protection: 1; mode=block 
Expires: 0 

Comme vous pouvez le voir. X-AUTH-TOKEN est présent. Mais quand j'essaye de le récupérer et l'enregistrer au stockage local ...

$http.post(loginUrl) 
    .success(function(data, status,headers) { 
    $scope.hello = data; 
    var TOKEN = headers("X-AUTH-TOKEN"); 
    window.localStorage['X-AUTH-TOKEN-TRIVIA'] = headers("X-AUTH-TOKEN"); 
    }) 

Il renvoie toujours la valeur NULL. Pourquoi ne récupère-t-il pas le jeton si c'est clairement dans l'en-tête?

J'ai également utilisé des guillemets simples.

$http.post(loginUrl) 
    .success(function(data, status,headers) { 
    $scope.hello = data; 
    var TOKEN = headers('X-AUTH-TOKEN'); 
    window.localStorage['X-AUTH-TOKEN-TRIVIA'] = headers('X-AUTH-TOKEN'); 
    }) 
+0

'têtes [ 'X-AUTH-TOKEN']' 'au lieu de les en-têtes ("X-AUTH-token")'. C'est un tableau pas une fonction afaik. –

+0

@ M.Deinum a raison. Vérifiez également le journal de la console de votre navigateur (F12), vous verrez une erreur disant: "TypeError: header n'est pas une fonction". – Kenney

+0

J'ai utilisé les deux. J'ai mis à jour mon code. toujours NULL. Et j'ai aussi enregistré dans une variable pour voir si c'est là. toujours nul. – numerical25

Répondre

0

figured it out ... Merci à un autre poste

Angular.js saying custom HTTP response header is null

Le problème est côté serveur. Vous devez ajouter

Dans mon cas en utilisant Spring Boot ou Spring. Vous auriez probablement ajouter dans votre CorsFilter

response.setHeader("Access-Control-Expose-Headers", "X-Auth-Token");