2013-03-20 3 views
7

$httpリクエストヘッダーフィールドを特定の1つのリクエスト(これは$httpProviderレベルではないことを意味します)から削除します。これらのフィールドは次のとおりです。

  • のCache-Control
  • 場合修飾-ので
  • リファラー
  • 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') 

はheadersGetterは(絶対に何も私に言っている)function (c){a||(a=Nb(b));return c?a[y(c)]||null:a}である、と私はtransformRequest関数から返すために何を理解していなかった、dataundefinedであることを示しています。

答えて

7
  1. あなたが角度のunminifiedバージョンを使用している場合は、例外が発生したとき、あなたはよりよいバックトレースを得るでしょう、そしてあなたは簡単に時間、角度コードをイントロスペクションを持っています。私は個人的に開発中にそれをお勧めします。あなたには、いくつかのデータを掲載している場合を除き、あなたの変圧器へdata引数は未定義になります

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

    :ここではheadersGetterが実際にどのように見えるのです。あなたが単一のヘッダを取得したい場合

  2. headersGetter機能は、オプションの引数nameがかかりますが、あなたは、ヘッダーを設定するための引数を省略:

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

    あなたの変圧器からの戻り値が値でなければなりませんdataを使用します。

  3. can’t change the Referer header XHR。

関連する問題