2017-04-05 19 views
5

dan başlık alanının çıkarılması ben (1.2.1), Aşağıdaki kod ile başlık yetkilendirme ayarlanmış bir Vuejs (2.2.6) ve Vue-kaynak örneğini, bu şekildeVueJs ve VueResource, bir Ajax isteği

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

Ancak, üçüncü taraf API için bir istek yapmak istiyorum, ve Authorization alan gönderilmesini istemiyorum: Ben API tüm istekleri yetki verebilir. Ayrıca, bu API, bu yetkilendirme üstbilgisini kullanmanıza izin vermez.

let CEP = ''; 

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

yetkilendirme alanı Erişim Kontrol-İstek-Başlıkları üzerine, başlıkla gönderilen Bu şekilde: Aşağıdaki kodları ile bazı başlık alanları kaldırmak için çalıştı

Request header

, başarısız. vue-resource belgelerinde

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

, talep yapılandırma zorlamak için bir nesne yerleştirilmesi olasılığı vardır, ancak belgeler tam değildir.

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

belirli bir isteğin gelen Yetkilendirme alanını veya başka bir alanı kaldırmak için herhangi bir yolu var mı?
Teşekkürler.

* Ben ben belirli alan silemezsiniz isteği ancak düzenleyebilir (aşağıda örnekteki gibi) önleyicilerin kullanarak *

GÜNCELLEME. ,

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

cevap

7

kullanın bir interceptor isteği incelemek ve gerekirse başlığını kaldırın:

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

deneyin Sil.

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

Bu inanılmaz, ayarlayabilirim/değiştirebilirim ancak silemiyorum! –

+1

@ThiagoPereira Belki de bunları .common'a atadığınızdan kaynaklandığını düşünüyorum. Bunu yapamaz mısın ve sadece yukarıda yaptığım gibi atayabilir misin? – Bert

+0

interceptor içindeki 'request.headers.common' olan' undefined', ben belirteç hiçbir şey olmaz silmeye çalıştığınızda Sana örnek kullanıyorum. Lütfen yukarıdaki baskılara bakınız. Bunun yanlış olduğunu düşünüyorsunuz: 'Vue.http.headers.common.AUTHORIZATION = 'Taşıyıcı: ...';' –