你如何指定子域?Chrome 期望子域的 cookie 以点为前缀,例如 domain=.example.com
您可能会发现这篇文章很有用:https ://serverfault.com/questions/153409/can-subdomain-example-com-set-a-cookie-that-can-be-read-by-example-com
引用您阅读的同一 RFC2109:
* A Set-Cookie from request-host x.foo.com for Domain=.foo.com would
be accepted.
所以 subdomain.example.com 可以为 .example.com 设置一个 cookie。到目前为止,一切都很好。
The following rules apply to choosing applicable cookie-values from
among all the cookies the user agent has.
Domain Selection
The origin server's fully-qualified host name must domain-match
the Domain attribute of the cookie
那么我们有域匹配吗?
- A 是 FQDN 字符串,格式为 NB,其中 N 是非空名称字符串,B 格式为 .B',B' 是 FQDN 字符串。(因此,xycom 域匹配 .y.com 而不是 y.com。)但是现在 example.com 不会根据定义与 .example.com 域匹配。但是 www.example.com (或域中的任何其他“非空名称”)> > 会。该 RFC 理论上已被 RFC2965 淘汰,后者规定了在 Set-Cookie2 操作上强制域的前导点。
正如@Tony 所指出的,更重要的是现实世界。有关实际用户代理正在做什么的一瞥,请参阅
Firefox 3 的 nsCookieService.cpp 和
Chrome 的 cookie_monster.cc 要了解实际站点在做什么,请尝试使用 wget 使用 > --save-cookies、--load-cookies 和 --debug 来查看发生了什么。
您可能会发现,实际上大多数站点都在使用旧 RFC 规范中的 Set->> Cookie 与“Host”值的某种组合,隐含地没有前导点(如 twitter.com 所做的)或设置域值(带有前导点)并重定向到像 www.example.com 这样的服务器(就像 google.com 一样)。