来自浏览器 HTTP 缓存的过期 X-Refreshed-Token 重新播放 (在 /api/* 上为 304) 会在用户登录后立即将其注销 ("您的会话已过期")
作者: Sergio-LPA创建于 2026年9月10日更新于 2026年9月10日
描述错误
API JSON 响应使用 Express 的默认弱 ETag 发送,并且没有 Cache-Control,因此 Chrome 将其存储在其 HTTP 缓存中。当后续请求重新验证,而服务器响应为 304 Not Modified 时,浏览器会将缓存的响应 与缓存的头部一起 传递给应用程序。如果该缓存响应是在令牌过期之前捕获的,则它会携带过时的 X-Refreshed-Token(server/modules/auth/auth.middleware.ts ~L75-78)。src/shared/api.ts 中的 fetch 包装器会无条件地将看到的任何 X-Refreshed-Token 写回 localStorage,因此一个新发行的令牌会被一个已经过期的、已经过期的令牌覆盖,客户端的过期检查就会启动,令牌被删除,用户会被跳转到登录页面,显示"您的会话已过期。请重新登录" - 成功登录后立即出现。
内容来源: siteboon/claudecodeui