Domain 设置:让 Cookie 跨子域共享

rl5954 互联网 137

在 JavaScript 中配置 Cookie 的 Domain 和 Path,核心是控制该 Cookie 在哪些域名和路径下被浏览器自动发送。这两个参数不提供安全隔离,但决定了作用范围的边界——设错会导致子域读不到、跨路径失效,甚至被浏览器直接忽略。

Domain 用于指定 Cookie 可被哪些域名下的页面访问。

关键规则有三条:

  • 必须以英文点号(.)开头,例如 .example.com,不能写成 example.com 或 www.example.com

  • 值必须与当前页面所属的根域名一致,比如在 blog.example.com 页面设置 domain=.example.com 是合法的;但设成 .com 或 .other.com 会被浏览器拒绝

  • 若不显式设置 domain,浏览器默认使用当前完整主机名(如 app.example.com),此时其他子域无法读取

示例:在 admin.example.com 设置一个供所有子域共用的登录态 Cookie:

document.cookie = "session_id=abc123; path=/; domain=.example.com; expires=Wed, 23 Jul 2026 00:00:00 GMT; Secure; SameSite=Lax";

Path 设置:限定 Cookie 的请求路径范围

Path 控制浏览器在哪些 URL 路径下自动携带该 Cookie。它只影响“发不发”,不影响“读不读”——JS 仍可通过 document.cookie 全局读取(除非加了 HttpOnly)。

  • 推荐显式设为 path=/(全站生效)或具体前缀如 path=/api/path=/admin/

  • 路径区分大小写,/Profile 和 /profile 视为不同作用域

  • 结尾斜杠很重要:path=/admin/ 匹配 /admin/users,但不匹配 /admin-api 或 /adminlogin

  • 含中文或特殊字符时,value 必须用 encodeURIComponent() 编码,path 值本身不用编码

示例:只为后台管理区启用的偏好设置 Cookie:

document.cookie = "theme=dark; path=/admin/; expires=Tue, 12 Aug 2026 00:00:00 GMT; Secure; SameSite=Strict";


标签: JavaScript Cookie 的请求路径范围 Domain