【问题标题】:Which cookie attributes uniquely identify a cookie?哪些 cookie 属性唯一标识一个 cookie?
【发布时间】:2012-10-06 20:25:18
【问题描述】:

我正在尝试确定 HTTP 服务器返回的 cookie 覆盖现有 cookie 还是设置新 cookie 的场景。

假设 foo.example.com 设置了一个 cookie:

设置 Cookie:SSID=abc;域=.example.com;路径=/abc;过期=周三, 格林威治标准时间 2021 年 1 月 13 日 22:23:01;安全的; HttpOnly

bar.example.com 需要设置哪些属性才能覆盖此 cookie 而不是创建新的?特别是下面的响应头会覆盖原来的cookie:

设置 Cookie:SSID=xyz;域=.example.com;过期=1990 年 1 月 13 日,星期三 格林威治标准时间 22:23:01;

跨浏览器的行为是否一致?

【问题讨论】:

    标签: security http web-applications cookies


    【解决方案1】:

    根据RFC 6265

    如果用户代理收到一个新的 cookie,其 cookie 名称、域值和路径值与其已存储的 cookie 相同,则现有 cookie 将被逐出并替换为新 cookie。

    这个声明在 RFC 中已经存在了 10 多年,只是措辞略有变化,所以我认为这种行为在所有浏览器中都是一致的。

    在您的示例中,两个 cookie 具有不同的路径(第二个默认假定为 '/'),因此它们将被视为不同的 cookie。对于第一个 cookie 的路径中的页面,将有两个同名的 cookie,因此它们由浏览器根据 RFC 处理如下:

    如果多个 cookie 满足上述条件,它们将在 Cookie 标头中排序,以便那些具有更具体 Path 属性的那些优先于那些不太具体的。

    【讨论】:

      猜你喜欢
      • 2011-07-29
      • 1970-01-01
      • 1970-01-01
      • 2014-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-29
      • 1970-01-01
      相关资源
      最近更新 更多