簡體   English   中英

IE CORS - 即使指定了標頭,也出現 Access-Control-Allow-Headers 錯誤

[英]IE CORS - Access-Control-Allow-Headers error even though headers are specified

我目前正在將網頁上的 AJAX 請求提交給 API 端點,該端點在 Chrome 和 Firefox 中有效,但在 IE 中無效。

我在 IE 的開發工具中收到的錯誤消息是:

SEC7123: Request header x-custom-header was not present in the Access-Control-Allow-Headers list.
SCRIPT7002: XMLHttpRequest: Network Error 0x80070005, Access is denied.


查看飛行前 OPTIONS 請求,以下是一些標頭:

Origin: http://www.example.org
Access-Control-Request-Headers: content-type, accept, x-custom-header
Access-Control-Request-Method: GET

飛行前的反應表明:

Access-Control-Allow-Headers: content-type, x-custom-header
Access-Control-Allow-Methods: GET, POST, PUT, OPTIONS
Access-Control-Allow-Origin: *


發生這種情況后,不會執行 AJAX 請求。 看起來 IE 看​​不到在飛行前請求的響應中返回了標頭。


任何幫助將不勝感激,如果您需要更多信息,請詢問。

謝謝,詹姆斯

好的,所以我找到了解決方案。 事實證明,IE 強制標頭的值位於以逗號分隔的列表中,並且飛行前請求使用具有相同鍵的多個標頭進行響應。 (即使 W3 說這樣做應該沒問題https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2

網絡選項卡上的所有開發工具(包括 IE)都將標題組合在一起顯示為逗號分隔列表,即使它們在技術上是具有相同名稱的不同標題。 這就是混亂的來源。

這是在使用 Postman 模擬飛行前請求並看到標頭作為單獨項目返回時發現的。

因此,要解決此問題,請確保 CORS 標頭(例如“access-control-allow-headers”)包含逗號分隔列表,而不是所需的標頭,因為 IE 將僅接受發送的第一個標頭。


抱歉,如果這句話措辭不當,如果您願意,可以隨時改進答案。

我們遇到了 Internet Explorer 和 Access-Control-Allow-Methods 的 CORS 問題,它們與 OPTIONS 響應中的允許“*​​”不兼容。 修復是在我們的 API 網關中更改選項響應以使用所有方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM