7

$http1つの特定のリクエストからいくつかのリクエストヘッダーフィールドを削除したい($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;
      } 
    

    データを POST しない限り、トランスフォーマーへのdata引数は未定義になります。

  2. 単一のヘッダーを取得する場合、headersGetter関数はオプションの引数を受け取りますがname、引数を省略してヘッダーを設定します。

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

    トランスフォーマーからの戻り値は、data使用したい値でなければなりません。

  3. XHR からヘッダーを変更することはできませんReferer

于 2013-03-20T18:03:34.407 に答える