327 字
2 分鐘
Fetch API 處理 Cookie 的跨域請求

Fetch API 簡介#

Fetch API 是現代前端開發中廣泛使用的網路請求工具,基於 Promise 設計,提供了簡潔的介面來處理 HTTP 請求和回應。與傳統的 XMLHttpRequest(XHR)相比,Fetch 更加靈活,易於與其他技術集成,如 Service Workers。

默認情況下,Fetch API 不會發送或接收 Cookie。這是為了遵守同源政策(Same-Origin Policy)並增強網站的安全性。也就是說,除非明確配置,Fetch 請求不會攜帶跨站點的憑證資訊,包括 Cookie 和 HTTP 認證資訊。

要在 Fetch 請求中攜帶 Cookie,需要在請求的配置物件中設置 credentials 屬性為 'include'。這將確保請求包含跨站點的憑證資訊,包括 Cookie。

fetch('https://example.com/api/data', {
  credentials: 'include'
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));

在跨域請求中攜帶 Cookie 需要伺服器端的配合。伺服器必須在回應標頭中設置適當的 CORS(跨域資源共享)標頭,以允許跨站點請求攜帶憑證資訊。具體來說,伺服器需要設置:

  • Access-Control-Allow-Origin 為請求的來源。
  • Access-Control-Allow-Credentialstrue

否則,瀏覽器將不會發送 Cookie,即使客戶端設置了 credentials: 'include'

Fetch API 處理 Cookie 的跨域請求
https://laplusda.com/posts/fetch-api-and-cookies/
作者
Zero
發佈於
2024-10-19
許可協議
CC BY-NC-SA 4.0