Angular Js – definir o token no header padrão

Estou tentando adicionar um header com meu token de access a cada chamada de API. Ele funciona bem para todas as solicitações GET, mas assim que eu tento fazer um POST, o header não é adicionado.

Aqui está como eu adiciono o token:

app.factory('api', function ($http, $cookies) { return { init: function (token) { $http.defaults.headers.common['Token'] = token || $cookies.loginTokenCookie; } }; }); 

Que é chamado daqui:

 app.run(function ($cookies, $http, $location, $rootScope,api) { $rootScope.location = $location; api.init(); }); 

Eu tentei fazer isso da seguinte maneira:

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

Mas isso também não funciona. Só funciona quando altero o nome da chave do header da seguinte forma:

  $http.defaults.headers.post['Token-Post'] = token || $cookies.loginTokenCookie; 

Como faço para atribuir um header padrão para postagens e receber solicitações no AngularJs?

Em vez de colocar o token nos headers dentro de cada serviço (ou chamada), talvez seja melhor usar um interceptor $http ( docs aqui ).

Em seguida, você pode colocar o token em todas as solicitações. Isso funcionará se a solicitação for GET ou POST.

Amostra JS:

 $httpProvider.interceptors.push(function($q, $cookies) { return { 'request': function(config) { config.headers['Token'] = $cookies.loginTokenCookie; return config; } }; }); 

Talvez eu esteja errado, mas porque não apenas:

 app.config(['$httpProvider', function ($httpProvider) { $httpProvider.defaults.headers.post['token'] = 'your_token'; }]); 

Interceptores são mais pesados ​​e não são necessários neste caso