问题描述
我有一个奇怪的问题。我有一个带有三个端点 /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。