从Angular.js $ http请求中删除标头

时间:2013-03-20 16:58:37

标签: angularjs http http-headers

我想从一个特定请求中删除一些$http请求标头字段(这意味着不在$httpProvider级别)。这些字段是:

  • 缓存控制
  • 如果-Modified-Since的
  • Referer的
  • X-请求-随着

如何在单个请求中执行此操作?我尝试使用transformRequest参数,但没有找到足够的信息来使其工作。这样的[CoffeeScript]代码:

$scope.logout = ->
  $http({
    method: 'GET'
    url: '/api/logout'
    headers: { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' }
    transformRequest: (data, headersGetter) ->
      console.log data
      console.log headersGetter
      data
  }).success ->
    $location.path('editor')

表明dataundefined,headersGetter是function (c){a||(a=Nb(b));return c?a[y(c)]||null:a}(我绝对没有告诉我),我不明白从transformRequest函数返回什么。

1 个答案:

答案 0 :(得分:7)

  1. 如果你使用Angular的非限制版本,当异常发生时你会得到更好的回溯,你可以更容易地反省角度代码。我个人在开发时推荐它。这是headersGetter实际上的样子:

    function (name) {
        if (!headersObj) headersObj =  parseHeaders(headers);
    
        if (name) {
          return headersObj[lowercase(name)] || null;
        }
    
        return headersObj;
      } 
    

    除非您正在发布一些数据,否则您的变换器的data参数将是未定义的。

  2. headersGetter函数采用可选参数name,如果您想获得单个标题,但省略了设置标题的参数:

    headersGetter()['Cache-Control'] = 'no-cache';
    headersGetter()['X-Requested-With'] = '';
    

    变压器的返回值应该是您要使用的data的值。

  3. 来自XHR的can’t change the Referer header