原文

虽然现在有 RFC 2965 规范(Set-Cookie2,已经废弃了 RFC 2109),但大多数浏览器并不完全支持,只是遵守 Netscape 的原始规范

Domain 属性值和有效域之间的区别是:前者是 Set-Cookie 头字段,后者是该属性值的解释。根据 RFC 2965 规范,应适用于以下情况:

  • 如果 Set-Cookie 头部字段没有 domain 属性,则有效域是请求的域
  • 如果存在 Domain 属性,则其值将被用作有效域(如果该值不以 . 开头,则该值将由客户端添加)

拥有有效域,它还必须与当前请求的域进行域匹配才可以设置;否则 cookie 将被修改。同样的规则适用于选择 在请求中发送的 Cookie 。

将这些知识映射到你的问题上,则如下:

  • 带有 Domain=.example.com 的将可用于 www.example.com
  • 带有 Domain=.example.com 的将可用于 example.com
  • 带有 Domain=example.com 的将会被转换为 .example.com ,因此,也可用于 www.example.com
  • 带有 Domain=example.com 的不可用于 anotherexample.com
  • www.example.com 能为 example.com 设置 cookie
  • www.example.com 不能为 www2.example.com 设置 cookie
  • www.example.com 不能为 .com 设置 cookie

要通过 www.example.comexample.com 读取或设置一个 cookie,请分别为 .www.example.com.example.com 设置。但是,第一个 .www.example.com 只能在该域下面的其他域(例如 foo.www.example.co 或 bar.www.example.com) 访问,其中 .example.com 也可以被任何 example.com 下的其他域(如 foo.example.combar.example.com) 访问。