跨子域共享 Cookie 需设 Domain=.example.com、path=/、Secure(HTTPS 时)及 SameSite=Lax/None;前端 JS 无法写入跨域 Cookie,HttpOnly 的 Cookie 不可被 JS 读取。

要在不同子域之间共享 Cookie,核心不是“跨域操作”,而是让浏览器把 Cookie 识别为属于同一个父域。关键在 Domain 属性的写法 和其他配套属性的协同设置。隔离则靠 Path、Domain 或存储位置的差异来实现。
共享 Cookie:必须显式声明带点号的父域
浏览器只认以点开头的 Domain 值(如 .example.com)为父域通配规则,才会让该 Cookie 在所有子域下生效:
- ✅ 正确写法:
domain=.example.com→ 可被example.com、www.example.com、api.example.com等读取 - ❌ 错误写法:
domain=example.com(无点)→ 多数现代浏览器仅限主域,子域无法访问 - ❌ 错误写法:
domain=www.example.com→ 仅限该子域,其他子域完全隔离
配套属性必须一致才真正生效
光设 domain 不够,路径、协议、安全策略不匹配也会导致子域间失效:
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
-
path=/:确保所有子域下的任意路径都能携带该 Cookie;避免写成
path=/admin这类窄路径 - secure:全站 HTTPS 时必须启用;否则 HTTPS 页面不会发送该 Cookie
-
SameSite=Lax 或 None:Lax 是默认值,适合多数跳转场景;若需从外部站点(如营销页)跳转并携带 Cookie,得设
SameSite=None,但此时secure必须同时启用
前端 JS 只能读取,不能“写入”跨子域 Cookie
JavaScript 的 document.cookie 只能设置当前页面所在域的 Cookie,且无法设置 HttpOnly 属性:
立即学习“Java免费学习笔记(深入)”;
- 服务端必须通过响应头
Set-Cookie: token=abc; Domain=.example.com; Path=/; Secure; HttpOnly; SameSite=None下发共享 Cookie - 前端 JS 可读取非 HttpOnly 的 Cookie:
document.cookie或用js-cookie库的Cookies.get('token') - 若服务端设置了
HttpOnly,JS 读不到值,但浏览器会在发往.example.com域的请求中自动携带
隔离不同子域的 Cookie 使用场景
想让某些 Cookie 只在特定子域生效,或同域名下按路径区分使用:
- 不设
Domain,或设为具体子域(如domain=shop.example.com),就自然限制在该子域内 - 用
Path控制作用范围:path=/user的 Cookie 只在/user及其子路径下发送,path=/admin则互不干扰 - 敏感凭证(如 session_id)应由后端下发
HttpOnly+Secure+Domain=.example.com,前端不存也不读,只通过 API 间接使用

















