【问题标题】:Is it valid/predictable to return multiple Cookies with the Same Name (and different domain/path)?返回多个具有相同名称(和不同域/路径)的 Cookie 是否有效/可预测?
【发布时间】:2021-08-10 02:45:56
【问题描述】:

在同一个 HTTP Set-Cookie 响应标头中发送多个同名 cookie 在 HTTP 中是否有效(并且工作可靠)?

响应类似于:

Set-Cookie: NAME=bad;  path=/notthere;     expires=getridofthiscookie
Set-Cookie: NAME=good; path=/
Set-Cookie: NAME=bad;  domain=a.subdomain; expires=getridofthisaswell

目的是消除使用错误路径(或在子域上)创建的无关 cookie(“坏”cookie),这会导致根据请求路径发送到服务器的 cookie 值不理想/域。


相关

【问题讨论】:

  • 对这个问题有点困惑。显然,您不能删除其他域上的 cookie;这将是一个巨大的安全漏洞。因此,您示例中的第三行由于比 Set-Cookie 标头机制更基本的原因不起作用,并且无法删除另一个域上的 cookie。或者,也许我误解了这个问题?
  • @RomanK 确实有点不清楚。一些要删除的 cookie 位于主域的子域上;它们应该只是主域上的 cookie,目标是让它们从子域中过期,同时确保它们存在于主域中。我已经更新了问题,将盖子重新盖上。
  • @RomanK 可以通过正确创建具有显式路径/域的 cookie 来避免整个问题,并且 .. 不幸的是,目前情况并非如此。
  • 可能与 stackoverflow.com/questions/12281038/… 相关,无法做到这一点被视为错误。
  • 也许您可以为“.domain.com”设置一个bad cookie(即通配符cookie)? serverfault.com/questions/153409/…

标签: http cookies


【解决方案1】:

它适用于我最新的 Edge(版本 92.0.902.67(官方版本)(x86_64))

我有两个同名的本地 cookie test,一个坏的与子域 (.www.domain.com) 关联,好一个与域 (www.domain.com) 关联。

我使用 Charles 来模拟包含两个 set-cookie 标头的 Web 服务器响应,如下所示:

set-cookie:test=blabla; path=/; secure; SameSite=None
set-cookie:test=; path=/; domain=.www.domain.com; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 -0000; secure; SameSite=None

Edge 足够聪明,可以删除坏 cookie 并更新好 cookie。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 2014-05-03
    • 2020-08-17
    • 2014-06-25
    • 2015-02-19
    相关资源
    最近更新 更多