以下為常見的的 cookie 屬性。
Set-Cookie: session=abc; Path=/
→ 此 cookie 對整個網站(所有路徑)都有效。Set-Cookie: admin=1; Path=/admin
→ 只有當請求的 URL path 以 /admin 開頭時,瀏覽器才會送這個 cookie。app.example.com
回應的 cookie,只有 app.example.com
會送出。Domain=example.com
或 Domain=.example.com
:允許 example.com
以及所有子域(如 www.example.com
, shop.example.com
)在對應請求時送該 cookie。Set-Cookie: lang=en; Domain=example.com; Path=/
→ www.example.com
與 api.example.com
都會送出 lang
。Set-Cookie: session=abc; Secure
→ 在 https://
時才會送;http://
不會送。document.cookie
存取該 cookie。Set-Cookie: session=abc; HttpOnly
→ XSS(跨站腳本)若成功執行,也無法用 JS 讀走這個 cookie。Set-Cookie: id=1; Max-Age=3600
→ 1 小時後到期。SameSite=Strict
:最嚴格,只有當請求是「同源導航」時才送 cookie(例如從 example.com
內部點連結)。跨站點導向(例如從 evil.com 的一個連結導向 example.com)不會送 cookie。SameSite=Lax
:較寬鬆,允許一些「安全性較高的跨站情況」送 cookie(例如 GET 導航),但在跨站 POST 或子資源請求(iframe、圖片 POST)通常不送。現代瀏覽器的預設通常為 Lax
。SameSite=None
:允許跨站送 cookie,但必須配合 Secure(也就是只能在 HTTPS 上使用 SameSite=None; Secure
)。Set-Cookie: id=1; SameSite=Strict; Secure; HttpOnly
SameSite=None; Secure
;對於一般 session cookie 建議 Lax 或 Strict 以防 CSRF。這是瀏覽器強制的命名約束(有助於提升安全):
__Secure-
:
Set-Cookie: __Secure-ID=abc; Secure; Path=/;
(且不能由不安全 HTTP 設定)__Host-
(更嚴格):
/
Set-Cookie: __Host-session=abc; Secure; Path=/;