微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用服务器端设置 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。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。