後,我正試圖從我們的API獲取數據。該API已啓用CORS支持和返回響應OPTIONS請求以下:陣營原住民 - 製作取得與CORS API工作OPTIONS響應
Access-Control-Request-Headers:content-type
Access-Control-Allow-Origin:*
的API不允許超過'application/json'
其他'Content-type'
什麼。
使用這個限制,我想使用陣營本地的fetch
方法來獲取數據。
方法1(無CORS):
{
method: 'POST',
mode: "no-cors",
headers: {
'content-type': 'application/json'
}
在該方法中,瀏覽器自動發送內容類型爲 '文本/純'。我認爲這是因爲CORS默認只允許三個標題中的一個。但是,由於服務器不支持此內容類型,因此它將返回錯誤返回給不支持的內容類型。
方法2(含CORS或無):
{
method: 'POST',
mode: "cors", // or without this line
redirect: 'follow',
headers: {
'content-type': 'application/json'
}
}
...
.then(response => console.log(response))
在這種情況下,使用Chrome的F12網絡工具,我可以看到服務器返回的數據:到服務器的第一個請求是fetch
爲OPTIONS
。爲此,服務器回覆一個空對象以及上面的標題集。下一次調用是實際的POST API調用,服務器用適當的包含一些數據的JSON響應迴應該調用。但是,通過我的代碼獲取控制檯的響應是{}
。我想這是因爲反應的fetch
API將返回回OPTIONS
調用,而不是實際POST
呼叫的響應。
有沒有辦法忽略OPTIONS請求的響應,並獲得then
方法來處理後續請求的響應?