代码之家  ›  专栏  ›  技术社区  ›  joeforker

为什么这段代码用不同的域=选项三重设置Cookie?

  •  1
  • joeforker  · 技术社区  · 15 年前

    web框架的cookie助手三重设置具有不同 Domain=

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

    为什么要将同一块饼干用不同的 域= ? 这是一个现在不相关的浏览器错误的解决方法,可以简化,还是今天仍然需要?

    1 回复  |  直到 15 年前
        1
  •  2
  •   jspcal    15 年前

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

    第一个Cookie域将默认为“当前主机名”,可能是“www.example.org”。由于站点在有或没有www子域的情况下都可以访问,因此第三个cookie可以在会话碰巧跨两个主机名时无缝地工作(一些负载平衡/缓存方案可能使用cache.example.org或www2或其他东西)。可能是合理的违约,但理论上可能会导致一些安全问题。。。

    我猜使用第三个cookie是因为第二个cookie将被符合netscape规范的UAs拒绝-组织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