7

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

  • 缓存控制
  • If-Modified-Since
  • 推荐人
  • X-Requested-With

如何在单个请求中执行此操作?我尝试使用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')

表明,headersGetter 是data(对我来说绝对没有任何意义),我不明白从 transformRequest 函数返回什么。undefinedfunction (c){a||(a=Nb(b));return c?a[y(c)]||null:a}

4

1 回答 1

7
  1. 如果您使用 Angular 的未缩小版本,当异常发生时您将获得更好的回溯,并且您将更轻松地自省 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. 不能Referer从 XHR更改标题。

于 2013-03-20T18:03:34.407 回答