服务器测评网
我们一直在努力

Cookie 在根域名和子域名间如何共享与隔离?

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.combaidu.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 共享的关键配置

  1. Domain 属性设置为根域名

    • 若 Cookie 的 Domain 设为 .example.com(注意前缀点),则该 Cookie 可被 example.comwww.example.comblog.example.com 等所有子域名访问。
    • 若未设置 Domain 属性,Cookie 仅对当前域名生效,无法跨子域名共享。
  2. Path 属性覆盖所有路径

    • 为确保 Cookie 在所有页面有效,需将 Path 设为 ,表示根路径下的所有页面均可访问该 Cookie。
  3. 子域名读取与写入 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=/:覆盖所有页面路径。
  • SecureHttpOnly:增强安全性,防止敏感信息泄露。

Cookie 作用范围的优先级与注意事项

  1. 域名匹配优先级

    • 浏览器会优先匹配当前请求的域名与 Cookie 的 Domain 属性,请求 blog.example.com 时,浏览器会优先查找 Domain=blog.example.com 的 Cookie,其次查找 Domain=.example.com 的 Cookie。
  2. 跨域限制与隐私安全

    • 出于隐私保护,Cookie 的 Domain 属性不能设置为无关域名(如将 Domain=example.com 的 Cookie 发送给 evil.com),否则浏览器会自动拒绝。
    • 若子域名需要与根域名或其他子域名隔离(如支付子域名 pay.example.com),应避免使用根域名共享 Cookie,防止敏感信息跨域泄露。
  3. Cookie 大小与数量限制

    • 单个 Cookie 的大小通常限制在 4KB 以内,单个域名下最多可存储约 50 个 Cookie,若需存储大量数据,建议使用 localStoragesessionStorage 作为补充。

Cookie 的 Domain 属性是控制其作用范围的核心机制,通过合理设置根域名(.example.com)和子域名(如 blog.example.com)的共享规则,可实现跨子域名会话管理、用户偏好保存等功能,在实际应用中需兼顾安全性与隐私保护,避免敏感信息泄露,同时注意 Cookie 的数量和大小限制,理解根域名与子域名的层级关系及 Cookie 的作用机制,有助于开发者构建更安全、高效的前端交互体验。

赞(0)
未经允许不得转载:好主机测评网 » Cookie 在根域名和子域名间如何共享与隔离?