raz*_*h01 12 angularjs angularjs-http
我试图为每个API调用添加带有访问令牌的标头.它适用于所有GET请求,但是一旦我尝试发布POST,就不会添加标头.
以下是我添加令牌的方法:
app.factory('api', function ($http, $cookies) {
return {
init: function (token) {
$http.defaults.headers.common['Token'] = token || $cookies.loginTokenCookie;
}
};
});
Run Code Online (Sandbox Code Playgroud)
从这里调用的是:
app.run(function ($cookies, $http, $location, $rootScope,api) {
$rootScope.location = $location;
api.init();
});
Run Code Online (Sandbox Code Playgroud)
我尝试过如下操作:
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;
}
};
});
Run Code Online (Sandbox Code Playgroud)
但这也行不通.它仅在我更改标题键名称时才有效,如下所示:
$http.defaults.headers.post['Token-Post'] = token || $cookies.loginTokenCookie;
Run Code Online (Sandbox Code Playgroud)
如何在AngularJs中为帖子分配默认标头并获取请求?
Dav*_*yon 21
不是将令牌放在每个服务(或调用)内的标头上,而是使用$http
拦截器(这里的文档)可能更好.
然后,您可以将令牌放在每个请求上.无论请求是GET还是POST,这都可以.
JS样本:
$httpProvider.interceptors.push(function($q, $cookies) {
return {
'request': function(config) {
config.headers['Token'] = $cookies.loginTokenCookie;
return config;
}
};
});
Run Code Online (Sandbox Code Playgroud)
也许我错了,但为什么不呢:
app.config(['$httpProvider', function ($httpProvider) {
$httpProvider.defaults.headers.post['token'] = 'your_token';
}]);
Run Code Online (Sandbox Code Playgroud)
拦截器较重,在这种情况下不需要
归档时间: |
|
查看次数: |
27415 次 |
最近记录: |