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';
}]);

Перехватчики более тяжелые и не нужны в этом случае