Cookie 筆記
CSRF 開發時會遇到的問題
要拉 image 到 local 跑 local server 來測的原因:比較容易 reset db
但因為我們的 web server 跑 https 並指定一個網址,所以開發會遇到 csrf error 的問題:
- 不同 domain 沒辦法 set cookie,
CSRF-TOKEN
送不過到後端 - http 不能設 https cookie,
ACCESS-TOKEN
送不到前端
- 可以用其他的指令例如
npm run dev:localserver
來把 API URL 改成 localhost:8001
--
Set-Cookie
HttpOnly
Forbids JavaScript from accessing the cookie, for example, through the Document.cookie property.
沒有設定的話,可以用 XSS 攻擊偷 cookie
Secure
- Note: Insecure sites (http:) can't set cookies with the Secure attribute (since Chrome 52 and Firefox 52).
- For Firefox, the https: requirements are ignored when the Secure attribute is set by localhost (since Firefox 75).
意思是說:http 不能 set https 的 cookies,但 Firefox 為了讓你好開發(測試),幫你開了個通道,如果是 localhost 就可以 http 設 https
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#Secure
SameSite
前後端分離的作法常會需要處理非 same site 的狀況
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite
手動設定 (console)
document.cookie = "CSRF-TOKEN=test; path=/;"