设置 cookie 的 domain 属性核心是实现同根域名下各子域共享,必须以点开头(如 .example.com),且需配合 path=/;漏前导点、协议不匹配或旧 cookie 干扰均会导致失效。

设置 Cookie 的 domain 属性,核心目的是让 Cookie 在多个子域名间共享。它不能突破一级域名限制,但能精准控制“谁可以读取这个 Cookie”。关键不是“扩大到任意域”,而是“扩大到同根域名下的所有子域”。
domain 设置的基本规则
浏览器强制执行同源策略,对 domain 有明确限制:
- 当前页面在
shop.example.com,只能将 domain 设为example.com或shop.example.com,不能设为other.com或admin.example.com(后者虽同根,但属于兄弟域,不被允许) - 必须以点开头(如
.example.com),表示该 Cookie 对example.com及其所有子域名(www.example.com、api.example.com、shop.example.com)都有效 - 若设为
www.example.com,则仅该二级域名可读;设为空或不设,浏览器默认使用当前完整主机名,效果等同于显式写当前域名
正确设置 domain 的 JavaScript 写法
使用 document.cookie 时,domain 必须与当前页面所属的根域名一致,且带前导点:
抓取并分析 OpenClaw JSONL 会话日志,重建并回填代理记忆文件。适用于:(1) 模型切换后记忆不完整,(2) 验证记忆覆盖度,(3) 重建丢失记忆,(4) 通过 cron/heartbeat 自动同步每日记忆。支持简单提取及基于 LLM 的叙事摘要,并自动清理敏感信息。
- 在
blog.example.com页面想让 Cookie 被app.example.com也读取:document.cookie = "token=abc123; expires=Wed, 23 Jul 2026 00:00:00 GMT; path=/; domain=.example.com"; - path 必须同时设置为
/,否则即使 domain 正确,路径限制也会导致其他子域无法访问 - 注意:HTTPS 站点建议加上
secure标志,避免明文传输:; secure
常见错误与排查要点
很多跨子域失效问题其实出在细节上:
-
漏掉前导点:写成
domain=example.com≠domain=.example.com,前者只匹配精确域名,后者才匹配所有子域 -
协议不一致:HTTP 页面设了
secure,Cookie 不会写入;HTTPS 页面设了非secure,Chrome 等现代浏览器可能拒绝保存 - 旧 Cookie 干扰:之前在某个子域下用不同 domain 存过同名 Cookie,新设置可能被旧值覆盖或冲突,建议先手动清除再测试
-
顶级域名限制:
.com、.org等公共后缀不允许设为 domain;浏览器只接受可注册域名(如.example.com),不能设.com
替代方案:当 domain 不适用时
如果涉及完全不同的根域名(比如 site-a.com 和 site-b.net),domain 属性无解,需换思路:
- 后端统一认证服务 + JWT Token 透传,前端通过 API 获取并本地存储(如 localStorage),不依赖 Cookie
- 使用
postMessage配合 iframe 在可信跨域页面间传递状态 - 反向代理将多域名请求收敛到同一域名下,从根本上规避跨域 Cookie 问题
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










