2013-03-20 2 views
7

Я хочу удалить некоторые поля заголовка запроса от одного конкретного запроса (это означает, что на уровне $httpProvider). Эти поля являются:

  • Cache-Control
  • If-Modified-Since
  • Referer
  • 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') 

показывает, что data является undefined, headersGetter является function (c){a||(a=Nb(b));return c?a[y(c)]||null:a} (который говорит мне абсолютно ничего), и я не понял, что возвращать из функции transformRequest.

ответ

7
  1. Если вы используете unminified версию Угловое, вы получите более хорошие, когда происходит цепочек вызовов исключение, и вы будете иметь более легкое время интроспекции угловой код. Я лично рекомендую его при разработке. Вот что на самом деле 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. Вы can’t change the Referer header от XHR.

Смежные вопросы