預檢請求
CORS 預檢請求是一個 CORS 請求,用於檢查 CORS 協議是否被理解,以及伺服器是否知曉使用特定的方法和標頭。
它是一個 OPTIONS 請求,使用兩個或三個 HTTP 請求標頭:Access-Control-Request-Method、Origin,以及可選的 Access-Control-Request-Headers。
預檢請求由瀏覽器自動發出,在正常情況下,前端開發者不需要自己構造此類請求。當請求被歸類為“需要預檢”時,它會出現,而對於簡單請求則會省略。
例如,客戶端可能會透過預檢請求詢問伺服器是否允許 DELETE 請求,然後再發送 DELETE 請求。
http
OPTIONS /resource/foo
Access-Control-Request-Method: DELETE
Access-Control-Request-Headers: x-requested-with
Origin: https://foo.bar.org
如果伺服器允許,它將以 Access-Control-Allow-Methods 響應標頭來響應預檢請求,其中列出了 DELETE。
http
HTTP/1.1 204 No Content
Connection: keep-alive
Access-Control-Allow-Origin: https://foo.bar.org
Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE
Access-Control-Allow-Headers: X-Requested-With
Access-Control-Max-Age: 86400
預檢響應可以根據使用 Access-Control-Max-Age 標頭建立的相同 URL 的請求進行可選快取,如上面的示例所示。要快取預檢響應,瀏覽器會使用一個獨立的快取,與瀏覽器管理的通用 HTTP 快取是分開的。預檢響應永遠不會快取在瀏覽器的通用 HTTP 快取中。