使用服务器端设置 cookie,服务器删除它们,仍在后续请求中

问题描述

我有一个奇怪的问题。我有一个带有三个端点 /ping、/login 和 /logout 端点的 API。 /login 设置了一个 token cookie,/logout 删除的是 token cookie,而 /ping 只返回“pong”。

端点的工作方式如下:

发布/登录 有效载荷:用户名=bob&password=kidname

返回一个 set-cookie: token=abcd; Path=/

获取/注销 带有 cookie: token=abcd 标题 返回一个 set-cookie: token=""; Path=/; Max-Age=0

获取/ping 以文本/纯文本形式返回 'pong'

用户使用 /login 登录时,token cookie 被设置,并且它在浏览器的 document.cookie 中可见。当用户使用 /logout 注销时,token cookie 从 document.cookie 中消失,但它仍然存在于对 /ping 的任何后续请求中。

我不明白为什么 cookie 会保留在对域的后续请求中(仅在 Chrome 中,每个 chrome 开发工具和服务器日志),即使服务器“删除”了 cookie,并且 javascript 显示 cookie 已删除。 Firefox 按预期工作,但基于 Chromium 的浏览器是当今的主流浏览器。

解决方法

事实证明,我缓存了一个重复的令牌,并将其限定在我的 /api 路径下,它覆盖了我的 / 路径 cookie。