在AngularJS上设置默认标题,但不';不要在一个特定的请求上使用它
为了发送OAuth2令牌,我在AngularJS上设置了如下默认标头:在AngularJS上设置默认标题,但不';不要在一个特定的请求上使用它,angularjs,http-headers,request,Angularjs,Http Headers,Request,为了发送OAuth2令牌,我在AngularJS上设置了如下默认标头: $http.defaults.headers.common['Authorization'] = 'Bearer ' + access_token; 这很好,但对于一个特定的请求,我不需要这个头(我得到一个错误) 在执行该请求时,是否有排除默认标头的方法 谢谢 解决了的 谢谢你让我走上了正确的道路。答案如下: $http({ method: 'GET', url: 'http://.../', t
$http.defaults.headers.common['Authorization'] = 'Bearer ' + access_token;
这很好,但对于一个特定的请求,我不需要这个头(我得到一个错误)
在执行该请求时,是否有排除默认标头的方法
谢谢
解决了的
谢谢你让我走上了正确的道路。答案如下:
$http({
method: 'GET',
url: 'http://.../',
transformRequest: function(data, headersGetter) {
var headers = headersGetter();
delete headers['Authorization'];
return headers;
}
});
当您使用$http进行呼叫时,您可以通过直接在请求配置中提供默认标题来覆盖这些标题:
$http({method: 'GET', url: '/someUrl', headers: {'Authorization' : 'NewValue'} }).success();
否则,您可以使用$http配置中的transformRequest
参数转换请求。见文件:
transformRequest–{function(data,headersGetter)| Array.}
–transform
函数或此类函数的数组。变换函数需要
http请求主体和标头,并返回其已转换的
(通常序列化)版本
通过这种方式,您可以在发送单个请求之前删除其标头:
$http({method: 'GET',
url: '/someUrl',
transformRequest: function(data,headersGetter){ //Headers change here }
}).success();
对于后来者,虽然解决方案可能已经奏效,但实际上您不应该为此使用transformRequest $http服务的Angular文档实际上涵盖了以下确切情况: 要明确删除通过自动添加的标题,请执行以下操作: $httpProvider.defaults.headers在每个请求的基础上,使用头 属性,将所需标题设置为未定义。 例如: 无法再使用
transformRequest
修改请求头:
如果需要动态添加/删除标题,则应在
标题函数,例如:
虽然
$httpProvider
可以覆盖$http
,intereceptor的使用是处理这个问题的一种方法,但我最终还是这样做了
function getMyStuff(blah) {
var req = {
method: 'GET',
url: 'http://...',
headers: {
'Authorization': undefined
}
}
return $http(req)
.then(function(response) {
return response.data;
});
}
因此,如果我将其设置为默认标题(不是transformRequest,而是我在问题帖子中所做的那样),我就不能为一个请求真正取消设置它?如果您想取消设置,您必须为您的特定请求使用transformRequest
参数,并通过自定义函数修改标题。注意-由于5da1256,transformRequest函数不能再修改请求头。
$http.get(url, {
headers: {
'X-MY_HEADER': function(config) {
return 'abcd'; //you've got access to a request config object to specify header value dynamically
}
}
})
function getMyStuff(blah) {
var req = {
method: 'GET',
url: 'http://...',
headers: {
'Authorization': undefined
}
}
return $http(req)
.then(function(response) {
return response.data;
});
}