Angular Js - jeu un jeton sur l'en-tête par défaut
Im essayant d'ajouter un en-tête avec mon jeton d'accès pour chaque appel d'API. Il fonctionne bien pour toutes les requêtes GET, mais dès que j'essaie de faire un POST l'en-tête n'est pas ajouté.
Ici est de savoir comment je ajouter le jeton:
app.factory('api', function ($http, $cookies) {
return {
init: function (token) {
$http.defaults.headers.common['Token'] = token || $cookies.loginTokenCookie;
}
};
});
Qui est appelée à partir d'ici:
app.run(function ($cookies, $http, $location, $rootScope,api) {
$rootScope.location = $location;
api.init();
});
J'ai essayé de le faire comme suit:
app.factory('api', function ($http, $cookies) {
return {
init: function (token) {
$http.defaults.headers.common['Token'] = token || $cookies.loginTokenCookie;
$http.defaults.headers.post['Token'] = token || $cookies.loginTokenCookie;
}
};
});
Mais cela ne marche pas. Il ne fonctionne que lorsque je modifie l'en-tête le nom de la clé comme suit:
$http.defaults.headers.post['Token-Post'] = token || $cookies.loginTokenCookie;
Comment puis-je attribuer une valeur par défaut de l'en-tête de messages et de demandes en AngularJs?
OriginalL'auteur razeth01 | 2014-04-23
Vous devez vous connecter pour publier un commentaire.
Au lieu de placer le jeton sur les en-têtes à l'intérieur de chaque service (ou d'achat), il pourrait être préférable d'utiliser un
$http
intercepteur (docs ici).Ensuite, vous pouvez placer le jeton sur chaque demande. Cela fonctionnera si la demande est GET ou POST.
JS l'échantillon:
Quelle est la raison de ce qui est la meilleure approche à
$httpProvider.defaults.headers.post['token'] = 'your_token';
?Notez que dans angulaire >= 1.4, vous devriez utiliser: $cookies.get('loginTokenCookie');
OriginalL'auteur Davin Tryon
Peut-être que je me trompe, mais pourquoi ne pas simplement:
Intercepteurs sont plus lourds et ne sont pas nécessaires dans ce cas
OriginalL'auteur Sebastien Horin