2016-01-07 13 views
6

alıp ben isteği incelendiği zaman bir şeyAyar yetkilendirme isteği getirme için ben başlıklarını ayarlamak gibi olamaz bir sorun karşısında geliyorum

var init = { 
     method: 'GET', 
     headers: { 
      'Accept': 'application/json', 
      'Content-Type': 'application/json', 
      'Authorization': 'Bearer myKey' 
     } 
    }; 
return fetch(url, init).then(function(response){... 

eksik düşünüyorum ağ sekmesinde, ben başlık ayarlanıp görmeyi beklediğiniz zaman yerine

Access-Control-Request-Headers:accept, authorization, content-type 

bkz olsun göremiyorum

Authorization: Bearer myKey 
Content-Type: application/json 
Accept: application/json 

Ayrıca, sıfır farkla yerel Headers() kullanmayı denedim.

Burada bir şey mi özlüyorum?

+0

ben "başlıkları" özelliği sadece düz bir nesne bir Başlıkları örneği olmak zorunda değil diye düşünüyorum. – Pointy

+0

https://developer.mozilla.org/en-US/docs/Web/API/Headers#Examples – xkcd149

cevap

7

Aynı sorunu yaşıyordum ve bu akşam biraz araştırdım. Sorun, cross-origin resource sharing/CORS. Fetch ile varsayılan değerdir ve işleri daha karmaşık hale getirir.

Hem başlangıç ​​hem de hedef aynı olmadıkça, etki alanları arası bir istektir ve bunlar yalnızca istek CORS'yi (Çapraz Kaynak Kaynak Paylaşımı) destekleyen bir hedefe yönelikse desteklenir. Eğer olmazsa o zaman geçmeyecektir. Genellikle No 'Access-Control-Allow-Origin' header is present on the requested resource

gibi bir hata görürsünüz. Bu nedenle, CORS dışındaki sitelerde Yetkilendirme üstbilgileri yapamazsınız;

0123: 5. ve temel başlıkları

YASAK ÜSTBİLGİ İSİMLERİ

  • https://fetch.spec.whatwg.org/#concept-headers-guard
  • bkz Eğer XMLHttpRequest rotayı çalışmadan önce

    Ve ne yazık ki, aynı geçerlidir: Bu XMLHttpRequest ile aynıdır: Nihayet

    , seçimlerinizi için ileri git: 1. JSONP 2. Tarayıcıda olmayan bir proxy yazınHedef sunucuda3. koyun CORS

    This article sums it up nicely

  • İlgili konular