发送请求而不在角度js中添加标头

时间:2015-08-07 11:43:57

标签: angularjs http-headers request

我正在尝试向第三方服务发送请求。因为我需要删除默认标题'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)

1 个答案:

答案 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

这可以采用标题列表或返回标题列表的函数。因此,对于非身份验证标头请求,请复制默认标头,删除您不需要的标头,然后发出请求。

希望这个帮助很好。