2016-01-07 115 views
6

我對面的一個問題,我似乎在哪裏可以不設置標題來對爲獲取請求,我想我想的東西獲取授權

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

當請求被檢查在網絡選項卡中,我沒有看到頭都將置,而是看

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

的時候我希望看到

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

我也嘗試使用本地頭()與零差異。

我在這裏錯過了什麼嗎?

+0

我認爲「頭」屬性必須是一個頭的實例,而不是隻是一個普通的對象。 – Pointy

+0

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

回答

7

我有同樣的問題,今天晚上進行了一些調查。問題是cross-origin resource sharing/CORS。使用Fetch它是默認的,它使事情變得相當複雜。

除非兩個起點和終點是一樣的它是一個跨域請求,如果該請求是支持CORS(跨來源資源共享)的目的地,這些只支持。如果沒有,那麼它將不會通過。您通常會看到如下錯誤:No 'Access-Control-Allow-Origin' header is present on the requested resource

這就是爲什麼您無法在非CORS站點上執行授權標題;見#5,基本報頭

FORBIDDEN頭名:

不幸的是,你嘗試了XMLHttpRequest路線之前,同樣適用: 這是使用XMLHttpRequest相同:

最後,你的選擇,向前移動的是: 1. JSONP 2.編寫一個不在瀏覽器中的代理在目標服務器上個3.將CORS

This article sums it up nicely