我正在尝试向每个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中为帖子分配默认标题并获取请求?
与其将令牌放在每个服务(或调用)内部的标头上,不如使用$http拦截器(docs在此处)。
$http
然后,您可以将令牌放置在每个请求上。无论请求是GET还是POST,这都将起作用。
JS示例:
$httpProvider.interceptors.push(function($q, $cookies) { return { 'request': function(config) { config.headers['Token'] = $cookies.loginTokenCookie; return config; } }; });