2017-04-05 23 views
5

Kiedy instancji Vuejs (2.2.6) i Vue-zasobu (1.2.1), ustawić zezwolenia nagłówka z następującego kodu, w ten sposób mogę autoryzować wszystkie żądania do mojego API:VueJs i VueResource, usuwając z pola nagłówka żądania Ajax

Vue.http.headers.common.AUTHORIZATION = 'BEARER ...'; 

jednak chcę złożyć wniosek o trzeciej partii API, a nie chcę pole Authorization powinna być wysłana. Ponadto ten interfejs API nie pozwala na użycie tego nagłówka autoryzacji.

let CEP = ''; 

this.$http.get('https://viacep.com.br/ws/' + CEP + '/json') 
    .then(response => { 
     console.log(response.headers); 
    }); 

ten sposób pole autoryzacji jest wysyłany z nagłówkiem, na Access-Control-request-headers:

Request header

Starałem się usunąć niektóre pola nagłówka z poniższych kodów, bezskutecznie.

this.$http.headers.common.AUTHORIZATION = null; 
this.$http.headers.common['Access-Control-Allow-Headers'] = null; 

this.$http.get('https://viacep.com.br/ws/' + CEP + '/json') 
    .then(response => { 
     console.log(response.headers); 
    }); 

W dokumentacji vue-resource, istnieje możliwość wstawiania obiektu, aby wymusić konfigurację żądanie, ale dokumentacja nie jest kompletna.

this.$http.get('https://viacep.com.br/ws/' + CEP + '/json', { 
    ...here... 
}).then(response => { 
    console.log(response.headers); 
}); 

Czy istnieje jakiś sposób, aby usunąć autoryzacji pole lub jakiegokolwiek innego pola z danym wnioskiem?
Dzięki.

* AKTUALIZACJA *

Używając przechwytujących (jak w poniższym przykładzie) mogę edytować żądanie ale nie mogę usunąć szczególna dziedzina.

Vue.http.interceptors.push((request, next) => { 

    const viacep = request.url.includes('viacep.com.br'); 

    if (viacep) { 
     request.headers.set('AUTHORIZATION', 'TRY THIS'); 
    } 

    next(response => {}); 
}); 

editing request

spróbuj usunąć:

Vue.http.interceptors.push((request, next) => { 

    const viacep = request.url.includes('viacep.com.br'); 

    if (viacep) { 
     request.headers.delete('AUTHORIZATION'); 
    } 

    next(response => {}); 
}); 

enter image description here

Odpowiedz

7

Użyć interceptor, zbadać wniosek i usunąć nagłówek w razie potrzeby.

Vue.http.interceptors.push(function(request, next) { 

    const removeAuthHeaders = request.url.includes("viacep.com.br"); 

    if (removeAuthHeaders){ 
    request.headers.delete('Access-Control-Allow-Headers') 
    request.headers.delete('AUTHORIZATION') 
    } 
    else { 
    request.headers.set('Access-Control-Allow-Headers', <value>) 
    request.headers.set('AUTHORIZATION', <value>) 
    } 
    next(); 
}); 
+0

To niewiarygodne, mogę ustawić/zmodyfikować, ale nie mogę usunąć! –

+1

@ThiagoPereira Myślę, że może dlatego, że przypisałeś je do '.common'. Czy możesz * nie * to zrobić i po prostu przypisać je tak jak powyżej? – Bert

+0

Wewnętrzny przechwytujący 'request.headers.common' jest' niezdefiniowany', używam przykładu, kiedy próbuję usunąć token, nic się nie dzieje. Proszę zobaczyć powyższe wydruki. Twoje zdanie jest błędne: 'Vue.http.headers.common.AUTHORIZATION = 'Nosiciel: ...';' –