Angular Js - установить токен в заголовке по умолчанию
Я пытаюсь добавить заголовок с моим токеном доступа к каждому вызову API. Он хорошо работает для всех запросов GET, но как только я пытаюсь сделать POST, заголовок не добавляется.
Вот как я добавляю токен:
app.factory('api', function ($http, $cookies) {
return {
init: function (token) {
$http.defaults.headers.common['Token'] = token || $cookies.loginTokenCookie;
}
};
});
Что вызвано отсюда:
app.run(function ($cookies, $http, $location, $rootScope,api) {
$rootScope.location = $location;
api.init();
});
Я пробовал сделать это следующим образом:
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;
}
};
});
Но это также не работает. Он работает только тогда, когда я меняю имя ключа заголовка следующим образом:
$http.defaults.headers.post['Token-Post'] = token || $cookies.loginTokenCookie;
Как назначить заголовок по умолчанию для сообщений и получать запросы в AngularJs?
Ответы
Ответ 1
Вместо того, чтобы помещать маркер в заголовки внутри каждой службы (или вызова), лучше было бы использовать перехватчик $http
(docs здесь).
Затем вы можете поместить маркер по каждому запросу. Это будет работать, является ли запрос GET или POST.
Пример JS:
$httpProvider.interceptors.push(function($q, $cookies) {
return {
'request': function(config) {
config.headers['Token'] = $cookies.loginTokenCookie;
return config;
}
};
});
Ответ 2
Возможно, я ошибаюсь, но почему бы не просто:
app.config(['$httpProvider', function ($httpProvider) {
$httpProvider.defaults.headers.post['token'] = 'your_token';
}]);
Перехватчики более тяжелые и не нужны в этом случае