分類
標籤
.env AI Arc Arm Astro BigQuery btop Certbot Chrome CICD Cookie CORS CSS cURL DataTables defineExpose DevOps Docker Draggable Fetch API Gamania Git GitLab Google Calendar Google Cloud Summit Google Tag Manager GSAP HTML iCal inject JavaScript Laravel Less LINE Llama 3 Masonry Meta Nginx Nginx UI O(log n) Ollama OpenSSL Oracle OrbStack PHP Pinia Pixel Postman provide Proxyman Raycast requestAnimationFrame script setup Server Session Sitemap Socialite SSL TablePlus Termius Valet Vertex AI Visual Studio Code Vite Vue 3 Vue2 Vue3 Vuex Warp Webpack Yahoo Calendar Zeabur 二分搜尋 元件溝通 前端開發 動畫效果 峰值體驗 廣告 性能優化 打包 推薦系統 搜尋 時間複雜度 演算法 瀑布流排版 父子元件 環境變數 程式碼複製按鈕 系統監控 網站地圖 網頁開發 自動化部署 螢幕刷新率 語言模型 資訊檢索 跨域請求 轉化率 開發工具 陣列 電商 電子商務
327 字
2 分鐘
Fetch API 處理 Cookie 的跨域請求
Fetch API 與 Cookie
Fetch API 簡介
Fetch API 是現代前端開發中廣泛使用的網路請求工具,基於 Promise 設計,提供了簡潔的介面來處理 HTTP 請求和回應。與傳統的 XMLHttpRequest(XHR)相比,Fetch 更加靈活,易於與其他技術集成,如 Service Workers。
默認情況下的 Cookie 處理
默認情況下,Fetch API 不會發送或接收 Cookie。這是為了遵守同源政策(Same-Origin Policy)並增強網站的安全性。也就是說,除非明確配置,Fetch 請求不會攜帶跨站點的憑證資訊,包括 Cookie 和 HTTP 認證資訊。
如何在 Fetch 中攜帶 Cookie
要在 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
在跨域請求中攜帶 Cookie 需要伺服器端的配合。伺服器必須在回應標頭中設置適當的 CORS(跨域資源共享)標頭,以允許跨站點請求攜帶憑證資訊。具體來說,伺服器需要設置:
Access-Control-Allow-Origin
為請求的來源。Access-Control-Allow-Credentials
為true
。
否則,瀏覽器將不會發送 Cookie,即使客戶端設置了 credentials: 'include'
。
Fetch API 處理 Cookie 的跨域請求
https://laplusda.com/posts/fetch-api-and-cookies/