Cookie 的基本概念与作用机制
Cookie 是网站存储在用户浏览器中的小型文本文件,用于在用户访问不同页面时保存用户状态和偏好设置,当用户首次访问网站时,服务器会通过 HTTP 响应头向浏览器发送一个包含 Cookie 信息的 Set-Cookie 指令,浏览器随后会将该 Cookie 存储在本地,再次访问同一网站时,浏览器会在 HTTP 请求头中自动携带对应的 Cookie,服务器通过解析 Cookie 识别用户身份、登录状态、购物车内容等信息,从而实现个性化服务和会话管理。
Cookie 的核心属性包括:
- Name(名称):Cookie 的唯一标识符。
- Value(值):存储的具体数据,如用户 ID、会话令牌等。
- Domain(域名):指定 Cookie 可被哪些域名访问。
- Path(路径):限制 Cookie 在特定路径下生效,如
/admin仅限后台页面使用。 - Expires/Max-Age(过期时间):控制 Cookie 的生命周期,前者为绝对时间,后者为相对秒数。
- Secure/HttpOnly(安全标志):前者限制 Cookie 仅通过 HTTPS 传输,后者禁止 JavaScript 访问 Cookie,增强安全性。
根域名与子域名的层级关系
在互联网域名体系中,根域名是域名的最高层级,如 .com、.org 或国家代码顶级域名(如 .cn),而子域名是在根域名前添加前缀形成的二级或多级域名,blog.example.com 中,.example.com 是根域名(注册域名),blog 是子域名,常见的层级关系如下:
| 层级 | 示例域名 | 说明 |
|---|---|---|
| 顶级域名(TLD) | .com |
根域名的上一级,如通用顶级域名(gTLD)或国家代码顶级域名(ccTLD) |
| 注册域名(根域名) | example.com |
用户注册的二级域名,如 google.com、baidu.com |
| 子域名 | blog.example.com |
在注册域名前添加前缀,用于区分不同服务或业务模块 |
理解根域名与子域名的层级关系对 Cookie 的作用范围至关重要,因为 Cookie 的 Domain 属性直接决定了其可被哪些域名访问。
Cookie 在根域名与子域名间的共享机制
默认情况下,Cookie 的作用范围受其 Domain 属性限制,在 example.com 设置的 Cookie,默认仅对 example.com 及其直接子域名(如 www.example.com)生效,而不会自动覆盖 blog.example.com 等子域名,若需实现跨子域名共享 Cookie,需通过设置 Domain 属性为根域名(.example.com),并在 Path 属性中指定通用路径(如 )。
Cookie 共享的关键配置
-
Domain 属性设置为根域名
- 若 Cookie 的
Domain设为.example.com(注意前缀点),则该 Cookie 可被example.com、www.example.com、blog.example.com等所有子域名访问。 - 若未设置
Domain属性,Cookie 仅对当前域名生效,无法跨子域名共享。
- 若 Cookie 的
-
Path 属性覆盖所有路径
- 为确保 Cookie 在所有页面有效,需将
Path设为 ,表示根路径下的所有页面均可访问该 Cookie。
- 为确保 Cookie 在所有页面有效,需将
-
子域名读取与写入 Cookie
- 子域名(如
blog.example.com)可读取由根域名(.example.com)设置的 Cookie,反之亦然。 - 若子域名需独立设置 Cookie 且不希望影响其他子域名,可将
Domain设为当前子域名(如blog.example.com)。
- 子域名(如
示例:跨子域名共享登录状态
假设用户在 www.example.com 登录系统,服务器需通过 Cookie 保存登录令牌(如 session_id),并确保用户访问 blog.example.com 时保持登录状态,服务器应返回如下 Cookie:
Set-Cookie: session_id=abc123; Domain=.example.com; Path=/; Expires=Wed, 21 Oct 2025 07:28:00 GMT; Secure; HttpOnly
Domain=.example.com:允许所有子域名访问该 Cookie。Path=/:覆盖所有页面路径。Secure和HttpOnly:增强安全性,防止敏感信息泄露。
Cookie 作用范围的优先级与注意事项
-
域名匹配优先级
- 浏览器会优先匹配当前请求的域名与 Cookie 的
Domain属性,请求blog.example.com时,浏览器会优先查找Domain=blog.example.com的 Cookie,其次查找Domain=.example.com的 Cookie。
- 浏览器会优先匹配当前请求的域名与 Cookie 的
-
跨域限制与隐私安全
- 出于隐私保护,Cookie 的
Domain属性不能设置为无关域名(如将Domain=example.com的 Cookie 发送给evil.com),否则浏览器会自动拒绝。 - 若子域名需要与根域名或其他子域名隔离(如支付子域名
pay.example.com),应避免使用根域名共享 Cookie,防止敏感信息跨域泄露。
- 出于隐私保护,Cookie 的
-
Cookie 大小与数量限制
- 单个 Cookie 的大小通常限制在 4KB 以内,单个域名下最多可存储约 50 个 Cookie,若需存储大量数据,建议使用
localStorage或sessionStorage作为补充。
- 单个 Cookie 的大小通常限制在 4KB 以内,单个域名下最多可存储约 50 个 Cookie,若需存储大量数据,建议使用
Cookie 的 Domain 属性是控制其作用范围的核心机制,通过合理设置根域名(.example.com)和子域名(如 blog.example.com)的共享规则,可实现跨子域名会话管理、用户偏好保存等功能,在实际应用中需兼顾安全性与隐私保护,避免敏感信息泄露,同时注意 Cookie 的数量和大小限制,理解根域名与子域名的层级关系及 Cookie 的作用机制,有助于开发者构建更安全、高效的前端交互体验。

















