要让 Cookie 在二级域名间共享,必须将 Domain 属性设为以点开头的父域(如 .example.com),并确保 Secure、Path 和 SameSite 等属性一致;否则子域无法共享。

要让 Cookie 在二级域名间共享,关键在于正确设置 Domain 属性,使其覆盖多个子域,同时确保协议、路径和安全属性一致。
Domain 属性必须以点开头,且指定父域
Cookie 的 Domain 属性决定哪些域名可以读取它。若想在 a.example.com 和 b.example.com 之间共享,需将 Domain 设为 .example.com(注意开头的点)。浏览器会匹配该域名及其所有子域。
- ✅ 正确:
Domain=.example.com→ a.example.com、b.example.com、example.com 都可访问 - ❌ 错误:
Domain=example.com(无点)→ 仅主域匹配,部分浏览器拒绝子域访问 - ❌ 错误:
Domain=a.example.com→ 仅限该子域,无法被 b.example.com 读取
设置时需显式指定 Domain,不能依赖默认行为
浏览器默认不会自动将 Cookie 提升到父域。即使从 a.example.com 设置 Cookie,若未声明 Domain=.example.com,它只会绑定到 a.example.com。
- 服务端设置示例(HTTP 响应头):
Set-Cookie: token=abc123; Domain=.example.com; Path=/; HttpOnly; Secure - 前端 JavaScript 设置示例:
document.cookie = "token=abc123; domain=.example.com; path=/; secure; httponly";(注意:HttpOnlyCookie 无法用 JS 读写)
注意协议、路径与安全标志的一致性
即使 Domain 匹配,若 Secure、SameSite 或 Path 不一致,Cookie 也可能不被发送或被拦截。
-
Secure:如果站点全站启用 HTTPS,务必加上
Secure,否则 HTTPS 页面不会发送非 Secure Cookie -
SameSite:设为
Lax或None(若需跨站提交表单/跳转),但None必须搭配Secure -
Path:建议统一设为
Path=/,避免因路径不同导致子域间不可见
验证是否生效的小技巧
可在各子域页面打开开发者工具 → Application → Cookies,检查对应域名下是否出现相同名称的 Cookie;也可用 fetch 或表单提交测试后端是否收到该 Cookie。
- 常见失败原因:域名拼写错误(如多写点、少写点)、HTTPS 环境下漏掉
Secure、本地测试用了localhost(不支持二级域名 Cookie) - 开发调试建议:用真实二级域名(如
dev.example.com/api.example.com),或修改 hosts 绑定到 127.0.0.1










