2017-04-05 3 views
5

Wenn ich instanziiert eine Vuejs (2.2.6) und Vue-Ressource (1.2.1) ich die Header-Berechtigung mit dem folgenden Code festgelegt, auf diese Weise ich kann alle Anfragen an meine API autorisieren:VueJs und VueResource, Header-Felder von einer Anfrage Ajax Entfernen

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

Allerdings möchte ich eine Anfrage für einen dritten API machen, und ich will nicht das Authorization Feld geschickt werden. Darüber hinaus ermöglicht Ihnen diese API nicht, diesen Autorisierungsheader zu verwenden.

let CEP = ''; 

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

Auf diese Weise das Berechtigungsfeld mit dem Header gesendet wird, auf Access-Control-Request-Header:

Request header

ich einige Header-Felder mit den folgenden Codes zu entfernen versucht, ohne Erfolg.

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); 
    }); 

In der vue-resource Dokumentation, besteht die Möglichkeit, ein Objekt des Einsetzens der Anfrage Konfiguration zu erzwingen, aber die Dokumentation ist nicht vollständig.

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

Gibt es eine Möglichkeit, das Authorization Feld oder ein anderes Feld aus einer gegebenen Anfrage zu entfernen?
Danke.

* UPDATED *

Durch die Abfangjäger (wie in der unten Probe) kann ich die Anfrage bearbeiten, aber ich nicht ein bestimmtes Feld löschen.

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

Versuch löschen:

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

Antwort

7

Verwenden Sie ein interceptor, überprüfen Sie die Anfrage, und entfernen Sie den Header, wenn nötig.

+0

Es ist unglaublich, ich kann einstellen/ändern, aber ich kann nicht löschen! –

+1

@ThiagoPereira Ich denke, es könnte daran liegen, dass du sie '.common' zugewiesen hast. Kannst du das * nicht * tun und sie einfach wie oben zuweisen? – Bert

+0

Der 'request.headers.common' im Interceptor ist 'undefined', ich benutze Sie zum Beispiel, wenn ich versuche, das Token zu löschen passiert nichts. Bitte beachten Sie die obigen Drucke. Sie denken, das ist falsch: 'Vue.http.headers.common.AUTHORIZATION = 'Bearer: ...';' –

Verwandte Themen