Angularjs Angular JS-向所有GET/POST请求添加自定义头
我正在尝试使用拦截器向所有GET/POST请求添加“Authorization”头。 这是拦截器:Angularjs Angular JS-向所有GET/POST请求添加自定义头,angularjs,http-headers,authorization,request-headers,angular-http-interceptors,Angularjs,Http Headers,Authorization,Request Headers,Angular Http Interceptors,我正在尝试使用拦截器向所有GET/POST请求添加“Authorization”头。 这是拦截器: myApp.factory('httpRequestInterceptor', ['$rootScope', function ($rootScope) { return { request: function ($config) { $config.headers['Authorization'] = 'Basic ' + $rootScope.apiKey;
myApp.factory('httpRequestInterceptor', ['$rootScope', function ($rootScope) {
return {
request: function ($config) {
$config.headers['Authorization'] = 'Basic ' + $rootScope.apiKey;
return $config;
}
};
}]);
在myApp.config部分的主模块中使用拦截器,如下所示:
$httpProvider.interceptors.push('httpRequestInterceptor');
由于某些原因,我在网络选项卡中看不到授权标题(我使用的是Chrome),并且它没有到达服务器,我也没有收到任何错误。
我的应用程序中的GET/POST请求发送到不在我的域中的远程服务器
知道我做错了什么吗
解决方案:
我发现问题出在服务器端——显然,如果我在对*的响应中设置了Access Control Allow标头,它就不起作用,但是如果我按字面意思指定标头,它就可以正常工作。我认为您应该将其改为
myApp.factory('httpRequestInterceptor', ['$rootScope', function ($rootScope) {
var injector = {
request: function (config) {
config.headers['Authorization'] = 'Basic ' + $rootScope.apiKey;
return config;
}
};
return injector;
} ]);
尝试这样做您可以使用:
myApp.run([
'$http', '$rootScope',
function($http, $rootScope) {
$http.defaults.headers.common['Authorization'] = 'Basic ' + $rootScope.apiKey;
}
]);
您始终可以使用
$httpProvider
命令angular添加标题,如下所示:
myApp.config(['$httpProvider','$rootScope', function ($httpProvider, $rootScope) {
$httpProvider.defaults.headers.common['Authorization'] = 'Basic' + $rootScope.apiKey;
}]);
这将向所有请求添加标头。对于get和post,您可以设置:
$httpProvider.defaults.headers.get['Authorization']=''代码>和
$httpProvider.defaults.headers.post['Authorization']=''代码>
如果您不想将头添加到所有请求中,请不要使用$httpProvider.defaults.headers.common['Authorization']
。问题出在服务器端-显然,在对*的响应中设置访问控制允许头不起作用,但按我的需要指定头(访问控制允许标头:授权)工作正常。也尝试过,但不起作用。另外,请确保我已在响应上设置了Access Control Allow Headers标题,并将其设置为*.user1531186。是否可以尝试创建一个小提琴来重现该问题?我找到了一个解决方案,请参阅编辑过的问题。谢谢帮助。@user1531186您尝试过我编辑过的解决方案吗?我找到了一个答案lution,查看编辑后的问题。感谢您的帮助。奇怪的是,我在当前的应用程序中使用了类似的东西,并且可以正常工作。下面是一个JSFIDLE:我可以在发送标题的chrome工具中看到:访问控制请求标题:accept,Authorization何时设置$rootScope.apiKey?我找到了一个解决方案,请参阅编辑后的问题谢谢你的帮助。很高兴知道你发现了问题