2016-01-07 28 views
36

Atom Electron'da kullanmak için bir HTTP API kitaplığı yazıyorum. fetch dayanmaktadır. Sunucu benim kontrolümün dışında, fakat PHP'de yazıyor ve başlıklara hassas bir şekilde başlıklarını kontrol ettiğini görebiliyorum. istek 403 FORBIDDEN hata ile reddedilirfetch() küçük harf üstbilgi anahtarlarını gönderir

const headers = new Headers(); 
headers.append('Authorization', `Bearer ${key}`); 

const init = { 
    method: 'GET', 
    headers: headers 
} 

const req = new Request(baseUrl + '/items?format=json'); 
return fetch(req, init); 

:

Kodum şey gibidir. Electron Newtork panelindeki isteğe baktığımda, istek başlıkları mevcut ancak Authorizationauthorization oldu.

Biliyorum fetch() sadece HTTP Standardını takip ediyor, ancak tedarikçileri başlıklarımın gönderilmesi için fetch() almanın basit bir yolu var mı?

+4

@JaromandaX [spektrumu] (https://fetch.spec.whatwg.org/#terminology-headers) tüm başlık adlarını _byte-lowercased_ olduğunu söylemek gelmez. – sdgluck

+0

Orijinal olarak getirmenin bunu yapmadigini belirttim - fark ettim ki, bu garip olan, test ettigim sekilde PHP ile nginx sunucusunda oldugu gibi ... ve benim durumumda PHP "Yetkilendirmeyi" görüyor doğru - ve gerçekten de "Yetki" geçmek eğer ... php HTTP sunucusu –

+0

@sdgluck olmalı "yetkilendirme" ... olarak görüyor - o yorumunu kaldırıldı - yukarıda benim yorumu görmek! –

cevap

-1

kendim alıp kullanma ve aşağıdaki gibi yaptığımız benzer bir şey yapıyor ... edebi şablonda değerlendirilir biz geçmek bazı fonksiyonel parametreler olduğu gibi

const GLOBALS = require('./Globals'); 
const HEADERS = { 
    'Accept': 'application/json', 
    'Content-Type': 'application/json' 
}; 
const resourceURL = '/some/endpoint' 
const body = ''; 

var request = new Request(`${GLOBALS.API_ENDPOINT}${resourceURL}`, { 
         method: 'GET', 
         headers: new Headers(Object.assign(HEADERS, {'Authorization': `JWT ${token}`})), 
         body: body ? JSON.stringify(body) : null 
        }); 

return fetch(request) 
    .then(res => consume) 

alın sözde sahte kod gibidir.

+0

Yukarıdaki Q'da açıklanan bir sorundan kurtulmanıza yardımcı olur mu? –

+1

Cevabınız için teşekkürler, testlerimde 'getirme 'hala başlıkları küçük harfe dönüştürüyor. –

+0

o kullandığımız kod bizim için doesnt cuz garip ... –

4

anda olacak toLowercase() tüm başlıkları getir. (isteğe bağlı devre dışı bırakma hakkında bazı tartışmalar var burada https://github.com/whatwg/fetch/issues/304).

Şimdilik sen header seçeneğiyle http://api.jquery.com/jquery.ajax/ kullanması gerekebilir.

+0

Yorum için teşekkürler, yukarıdaki yorumlardan birinde github sorunu vurgulandı, bu nedenle zaman zaman kontrol ettim. Benim durumumda en azından jQuery'yi bu göreve bağımlılık olarak eklemenin gerçekten anlamlı olmadığını düşünüyorum. Bir geçici çözüm olarak bir XMLHttpRequest oluşturdum. –

İlgili konular