为什么这个代码使用不同的Domain = options三重Set-Cookie?

时间:2010-01-20 04:05:07

标签: cookies

一个Web框架的cookie帮助程序三次设置一个具有不同Domain=的cookie,并且没有人记得原因。

Set-Cookie: x=y; Path=/
Set-Cookie: x=y; Path=/; Domain=example.org
Set-Cookie: x=y; Path=/; Domain=.example.org

为什么使用不同的Domain=设置相同的Cookie三次?这是一个现在无关的浏览器错误的解决方法,可以简化,还是今天仍然需要?

1 个答案:

答案 0 :(得分:2)

我猜这是为了方便在同一会话中处理“www”和非www主机名...

第一个cookie域默认为“当前主机名”,可能是“www.example.org”。因为在有或没有www子域的情况下访问站点是很常见的,所以当会话恰好跨越两个主机名时,第三个cookie可以无缝地工作(一些负载平衡/缓存方案可能使用cache.example.org或www2或者东西)。也许是一个合理的默认值,但理论上可能会引起一些安全问题......

我猜测第三个cookie是被使用的,因为第二个cookie会被符合netscape规范字母的UA拒绝 - org tld中的cookie域必须至少有2个点......

  

任何一个域内失败的域名   七个特殊的顶级域名   下面列出的只需要两个时期。   任何其他域名至少需要   三。七个特别顶级   域名是:“COM”,“EDU”,“NET”,   “ORG”,“GOV”,“MIL”和“INT”。

http://web.archive.org/web/20070805052634/http://wp.netscape.com/newsref/std/cookie_spec.html