CORS:了解跨域請求的「預檢」請求
跨域資源共享(CORS) 在製作HTTP 時提出了挑戰跨域請求。為了解決這些限制,引入了預檢請求作為解決方法。
預檢請求說明
預檢請求是先於實際請求(例如 GET 或 POST)的 OPTIONS 請求)並用於與伺服器協商請求的權限。這些請求包含兩個附加標頭:
- Access-Control-Request-Method: 指定實際請求的方法。
- Access-Control -Request-Headers: 列出將包含在實際請求中的標頭。
配置伺服器回應
要處理預檢請求,伺服器必須使用以下標頭回應:
- Access-Control-Allow-Origin: 向請求中指定的來源授予權限。
- Access-Control-Allow-Methods: 指定實際請求允許的方法。
- Access-Control-Allow-Headers: 列出瀏覽器允許的標頭發送實際請求。
客戶端預檢實現
為了使預檢請求成功,客戶端必須包含以下修改:
- 發送OPTIONS 請求: 在實際請求之前,發送帶有相應Access-Control-Request-* 標頭的OPTIONS 請求。
- 包括必要的內容headers: 確保實際請求包含 Access-Control-Allow-Headers 回應頭中指定的所有標頭。
範例:
考慮 POST 請求的預檢請求,以從遠端 URL 取得資料。
預檢請求:
- 來源:https://yourdomain.com
- Access-Control-Request-Method: POST
- Access-Control-Request-Headers: X-Custom-Header
伺服器回應(假設POST和X-Custom-Header 是允許的):
- Access-Control-Allow-Origin:https://yourdomain.com
- Access-Control-Allow-Methods : POST
- Access-Control-Allow- Headers: X-Custom-Header
實際請求:
資料來源:https://yourdomain.com
Method : POST
X-Custom-Header: value
透過執行下列步驟,您可以有效地預檢HTTP 請求使用CORS 克服跨域限制。