我为REST应用程序设置标题时遇到了一些麻烦。 我需要将授权令牌设置为授权标头,实际上我使用此代码:
app.factory('sessionInjector', ['$log','$rootScope', function($log, $rootScope) {
var sessionInjector = {
request: function(config) {
$log.debug($rootScope.accesstoken);
angular.forEach($rootScope.accesstoken, function(value, key) {
if(key=='access_token'){
$log.debug(value);
config.headers['Authorization'] = "Bearer " + value;
}
});
return config;
}
};
return sessionInjector;
}]);
app.config(['$httpProvider', function ($httpProvider) {
$httpProvider.interceptors.push('sessionInjector');
}]);
forEach中的值具有正确的令牌值。
遗憾的是仍然没有获得资源......
执行日志语句,我在请求中看不到标题。 第一个请求标头用于获取令牌,并且它工作正常,但是对第二个请求等资源的请求不会发送适当的标头。 对于CURL,这有效:
curl -H "Authorization: Bearer 5314f45f-0ad0-4f3c-92c0-429c8075eea4" http://localhost:8080/categories/
答案 0 :(得分:0)
可能应该像这样设置标题,而不是将其设置为每个传出请求:
$httpProvider.defaults.headers.common['Authorization'] = "Bearer " + value;
答案 1 :(得分:0)
在痛苦的一天之后,我发现当我在IE上执行网站时,实现的拦截器正在工作......但为什么呢?为什么我无法在Chrome或Firefox下设置标头?我尝试使用Himanshu的方法和AJAX语法设置带拦截器的头文件,为什么它们都不能在这些浏览器上工作?