[筆記] 購物車功能開發必備注意事項 session 存取

購物車實作中,常會利用後端 session 並搭配前端瀏覽器溝通來達成。筆記下需要注意的地方,以避免後續檢查錯誤的痛苦。
wordhtml-transoform-word-format-to-html


內容

在開發購物車時,常會遇到「明明 API 回傳成功,跳轉後資料卻消失」的靈異現象。這通常與 Session Persistence 或 Same-Origin Policy 有關。

網域是否寫死 Hardcoded Domain

現象:使用者在 client-a.com 操作,但程式碼跳轉時寫死了 https://main-service.com/cart。

原因:瀏覽器的 Cookie 受同源政策保護,client-a.com 的 Session Cookie 無法在 main-service.com 下讀取。

解決:應使用相對路徑(如 /cart)或動態獲取 window.location.origin

競爭危害 Race Condition

現象:網路慢時正常,網路快時反而失敗;或時好時壞。

原因:前端在更新請求尚未完成(尚未收到 Response)時,就執行了頁面跳轉。

驗證 Cookie 屬性與存取權限

SameSite 屬性:若 API 與前端網域不同(跨子網域),後端需設定 SameSite=None; Secure。

HttpOnly:確認該 Cookie 是否被設定為 HttpOnly,如果是,前端 JS 將無法透過 document.cookie 讀取,僅能由瀏覽器自動帶入。

按讚加入粉絲團