我正在尝试向第三方服务发送请求。因为我需要删除默认标题'x-access-token'。为此,确实如下
$http({
url: 'http://ip-api.com/json',
method: 'GET',
transformRequest: function(data, headersGetter) {
var headers = headersGetter();
delete headers['x-access-token'];
return headers;
}
}).then(function(res){
console.log(res);
},function(error){
console.log(error);
});
遵循此 link 。
但是我收到了这个错误
TypeError: Cannot convert object to primitive value
at angular.js:10514
at sendReq (angular.js:10333)
at $get.serverRequest (angular.js:10045)
at processQueue (angular.js:14567)
at angular.js:14583
at Scope.$get.Scope.$eval (angular.js:15846)
at Scope.$get.Scope.$digest (angular.js:15657)
at Scope.$get.Scope.$apply (angular.js:15951)
at done (angular.js:10364)
at completeRequest (angular.js:10536)
答案 0 :(得分:0)
$http
服务配置对象允许您覆盖特定请求的http标头发送。请参阅config属性标题。
要基于每个请求显式删除通过$httpProvider.defaults.headers
自动添加的标头,请使用headers属性,将所需标头设置为undefined。
注意:将所需的标头/标头设置为未定义,这样就不会影响全局设置。
参见示例:
var req = {
method: 'POST',
url: 'http://example.com',
headers: {
'Content-Type': undefined
},
data: { test: 'test' }
}
$http(req).then(function(){...}, function(){...});
查看更多documentation。
这可以采用标题列表或返回标题列表的函数。因此,对于非身份验证标头请求,请复制默认标头,删除您不需要的标头,然后发出请求。
希望这个帮助很好。