代码之家  ›  专栏  ›  技术社区  ›  August Lilleaas

cookie“元数据”(过期,路径,…)是否已传输到服务器?

  •  5
  • August Lilleaas  · 技术社区  · 15 年前

    设置cookie时,设置原始cookie数据和一些元数据。此元数据包括cookie有效的路径、cookie的过期时间等。

    当浏览器执行请求时,浏览器会发送什么?它会发送完整的cookie和所有的“元数据”吗?还是只有cookie的实际数据,而没有元数据?

    4 回复  |  直到 15 年前
        1
  •  8
  •   AnthonyWJones    15 年前

    不仅cookie的值在后续请求中返回,其他元数据仍保留在客户机上。

    Set-Cookie 标头是在响应中创建的,其中包含有关cookie的名称、值和其他元数据。多个cookie将创建多个cookie 响应中的标题。

    当浏览器发出后续请求时,它会检查其可用cookie的“数据库”,以查看哪些cookie适合所请求的路径。然后创建一个 Cookie 请求中的标头,其中仅包含一系列符合条件的cookie的名称/值对。

    严格控制cookie的数量和数据的大小非常重要,否则您可能会发现,为每个请求发送的cookie数据的权重可能会影响性能。如果元数据也与cookie一起返回,情况会更糟。

        2
  •  1
  •   Ralf    15 年前

    服务器使用“Set cookie”头设置cookie。如果指定,则包含元数据(路径和到期)。客户端(浏览器)只在“cookie”头中发送cookie本身。

        3
  •  1
  •   appusajeev    15 年前

    只有cookie数据被发送到服务器,其他元数据由浏览器执行一些操作,如cookie过期

        4
  •  0
  •   jspcal    15 年前

    如果cookie设置在以下位置,则用户代理将重新传输路径、域和端口属性 RFC2965 (通过 Set-Cookie2

    Cookie: $Version="1";
      name="val"; $Path="/site"; $Domain=".example.com"; $Port="81";
      name="val"; $Path="/site/dir"; $Domain=".example.com"; $Port="81"
    

    如果cookie是使用原始netscape指定的 Set-Cookie 标头,则不会重新传输任何属性。如果具有相同名称(但不同路径)的多个Cookie对请求有效,则将提供所有匹配的Cookie。请求示例:

    Cookie: name=val; name=val2
    

    http://tools.ietf.org/html/rfc2965

    最初的netscape规范如下:

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

    推荐文章