2016-10-04 122 views
0

我嘗試添加自定義標題,X-Query-Key,對HTTP請求使用Fetch APIrequest但是當我加入這個請求的頭出現在設置頁眉失敗和Request Method設置由於某種原因到OPTIONS獲取請求不工作

當我刪除標題時,它會回到GET,因爲它應該這樣做。

樣品代碼看起來象下面這樣:

const options = { 
    url: url, 
    headers: { 
     'Accept': 'application/json', 
     'X-Query-Key': '123456' //Adding this breaks the request 
    } 
    }; 

    return request(options, (err, res, body) => { 
    console.log(body); 
    }); 
+2

聽起來像CORS。 – Bergi

回答

0

試試這個:

const headers = new Headers({ 
    "Accept": "application/json", 
    "X-Query-Key": "123456", 
}); 

const options = { 
    url: url, 
    headers: headers 
}; 

return request(options, (err, res, body) => { 
    console.log(body); 
}); 

如果不解決這個問題,它可能與CORS

+0

謝謝 - 這工作,猜我缺少'頭部' - 現在我得到CORS問題,這是我的下一個問題:D – Geraint

+0

我認爲這是因爲你必須調用構造函數來創建自己的頭。嘿,至少取回API使得CORS更容易處理。具有新獲取API的真正障礙是[獲取請求無法中止](https://github.com/whatwg/fetch/issues/27)。 fetch具有ServiceWorkers的用途,但在實踐中,我發現自己仍然使用XHR2。 – amdouglas

1

請求資源的 服務器必須支持跨源請求上的自定義標頭。此 示例中的服務器需要配置爲接受X-Custom-Header 標頭才能使提取成功。當設置自定義標題時,瀏覽器執行預檢檢查。這意味着瀏覽器 首先向服務器發送OPTIONS請求,以確定服務器允許使用什麼HTTP 方法和標頭。如果服務器配置爲 接受原始請求的方法和標頭,則發送 。否則,會引發錯誤。

所以,你將有2個要求,如果使用自定義標題,第一個與方法選項來檢查服務器允許自定義頁眉和之後,如果服務器響應是200 OK,並允許你原初的請求,第二個將被髮送

Working with the Fetch API