要让 Cookie 在同根域名的子域间共享,必须将 domain 设为 .example.com,path 设为 /,并配套启用 Secure 和 SameSite=Lax(或 None+Secure),前后端均需显式声明。

要让 Cookie 在 www.example.com、api.example.com、shop.example.com 这类同根域名的子域之间共享,关键不是“跨域”,而是正确配置 domain 属性为带前导点的父域名 —— 即 .example.com。浏览器只认这个格式,其他写法基本无效。
Domain 必须以点开头(.example.com)
这是硬性规则,不是可选项:
- ✅
domain=.example.com:匹配example.com及所有子域(www、api、shop等) - ❌
domain=example.com(没点):现代浏览器会当作精确匹配,子域通常读不到 - ❌
domain=www.example.com:仅限该二级域名,其他子域完全隔离
Path 必须设为 /
路径限制会叠加在 domain 之上。如果只设 path=/auth,那 shop.example.com/order 就不会携带这个 Cookie:
- 统一设
path=/,确保所有子域下的任意路径都能发送该 Cookie - 不要省略,也不要写窄路径;即使页面在
/user/profile,也要配path=/
Secure 和 SameSite 要配套启用
尤其在 HTTPS 环境下,缺一不可:
立即学习“Java免费学习笔记(深入)”;
-
secure:必须加上,否则 HTTPS 页面不会发送或保存非 secure 的 Cookie -
samesite=lax:默认值,适合多数登录/跳转场景 -
samesite=none:若需从外部站点(如营销页)跳转并携带 Cookie,必须同时启用secure,否则浏览器直接拒绝
前后端设置都要显式声明
不能依赖浏览器默认行为,服务端和前端都得手动写全:
- 后端 Set-Cookie 响应头示例:
Set-Cookie: session_id=abc123; Domain=.example.com; Path=/; Secure; HttpOnly; SameSite=Lax - 前端 JavaScript 示例(仅适用于非 HttpOnly Cookie):
document.cookie = "theme=dark; domain=.example.com; path=/; secure; samesite=lax"; - 用 js-cookie 库更安全:
Cookies.set('token', 'xyz', { domain: '.example.com', path: '/', secure: true, sameSite: 'lax' });


















