簡體   English   中英

如何在 CORS 預檢 OPTIONS 請求中發送自定義標頭?

[英]How do you send a custom header in a CORS preflight OPTIONS request?

我正在嘗試為 JSON 有效負載發送 CORS 請求。 我控制服務器和客戶端。

我在這里關注: https ://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS?redirectlocale=en-US&redirectslug=HTTP_access_control

服務器有一個自定義標頭,必須與每個請求一起發送。 因此,此自定義標頭使請求“不簡單”,因此必須使用 OPTIONS 請求對請求進行預檢。

我可以看到 jQuery 發出 OPTIONS 請求,但它沒有發送自定義標頭。

我試過的方法:

在這兩種情況下,瀏覽器都不會發送自定義標頭。

我正在使用 FF 17.0.1、jQuery 1.8.3。

您的問題不在於 jquery,而在於 CORS 的工作方式 您的 beforeSend 回調可能按預期工作......但無論如何瀏覽器都不會在預檢請求中發送自定義標頭。 這是設計使然; 預檢請求的目的是確定允許用戶代理(瀏覽器)發送超出 CORS 規范中定義的“簡單”內容的信息。 因此,對於用戶代理發送任何非簡單數據(例如您的自定義標頭)作為預檢請求的一部分是弄巧成拙的。

要指示用戶代理在實際的 CORS 請求中包含您的自定義標頭,請在您的預檢響應中包含一個Access-Control-Allow-Headers標頭 值得注意的是,如果您不太關心用戶代理傳輸的標頭,我相信您可以將Access-Control-Request-Headers請求標頭字段的值作為Access-Control-Allow-Headers的值回顯。您在響應中發送的Access-Control-Allow-Headers

您可能還希望包含在規范的語法部分中定義的其他一些Access-Control-Allow-*標頭。

另請參閱CORS - 如何“預檢”httprequest?

另請參閱Mozilla 的 CORS 預檢示例,其中顯示了這些標頭的實際操作。

暫無
暫無

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

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