2013-03-20 14 views
7

Desidero eliminare alcuni campi di intestazione richiesta $http da una richiesta specifica (significa non sul livello $httpProvider). Questi campi sono:

  • Cache-Control
  • If-Modified-Since
  • Referer
  • X-Data-Con

come fare questo in una singola richiesta? Ho provato ad usare il parametro transformRequest, ma non ho trovato abbastanza informazioni per farlo funzionare. Tale codice [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') 

dimostra che data è undefined, headersGetter è function (c){a||(a=Nb(b));return c?a[y(c)]||null:a} (che mi dice assolutamente nulla), e non capivo cosa per tornare dalla funzione transformRequest.

risposta

7
  1. Se si utilizza la versione di unminified angolare, si otterrà backtrace più bello quando un'eccezione accade, e avrete un tempo più facile l'introspezione del codice di angolare. Personalmente lo consiglio durante lo sviluppo. Ecco cosa headersGetter si presenta in realtà come: sarà indefinito

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

    La data argomento di vostro trasformatore a meno che non stai postando alcuni dati.

  2. La funzione headersGetter prende un argomento opzionale name, se si vuole ottenere un singolo colpo di testa, ma si omette l'argomento per impostare un colpo di testa:

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

    Il valore restituito dal trasformatore deve essere il valore di data che si desidera utilizzare.

  3. can’t change the Referer header da XHR.

Problemi correlati