← [ BACK_TO_NOTES ]

DevTools Cookie 调试

按 Set-Cookie → 浏览器存储 → 下一次请求 Cookie 三段证据排查 Cookie 登录态异常,并结合 Domain、Path、Secure、SameSite、Expires/Max-Age 与跨源凭证策略定位根因。

#debug #growing #frontend #browser #chrome-devtools

[!info] related notes

DevTools Cookie 调试

症状

  • 登录接口返回成功,但刷新后变成未登录;
  • Application 里有 Cookie,但请求没带;
  • Response 有 Set-Cookie,但 Application 里没有;
  • 本机正常、跨域环境失败;
  • 某些浏览器/HTTPS 环境下 Cookie 行为不同。

证据链

不要只看一处。按三段检查:

Response Set-Cookie
→ Browser 是否接受并存储
→ 下一次 Request 是否携带 Cookie

第一步:服务端有没有下发

在 Network 响应里检查 Set-Cookie。

如果根本没有:

  • 登录逻辑可能没设置;
  • 反向代理可能改写;
  • 代码走到了不同 response path。

这时先别查浏览器存储。

第二步:浏览器有没有接受

到 Application → Cookies 检查:

  • Name / Value;
  • Domain;
  • Path;
  • Expires / Max-Age;
  • Secure;
  • HttpOnly;
  • SameSite。

如果 Response 有 Set-Cookie 但没存下来,优先看 DevTools 的 blocked reason / Issues 提示,以及属性是否与当前 scheme/site 场景匹配。

第三步:请求为什么没带

Cookie 存在也不等于一定发送。

继续检查下一次 Network Request Headers,并逐项判断:

  • request host 是否匹配 Domain;
  • path 是否匹配;
  • 是否已过期;
  • Secure Cookie 是否在 HTTPS;
  • SameSite 是否允许当前跨站上下文;
  • 跨源 fetch 是否正确启用 credentials;
  • CORS 是否允许 credentialed response。

HttpOnly 的边界

HttpOnly 会阻止页面 JavaScript 通过 document.cookie 读取,但 DevTools 仍可以观察 Cookie。

所以:

document.cookie 看不到
≠ Cookie 不存在

典型根因矩阵

证据优先怀疑
无 Set-Cookie服务端/代理没有下发
有 Set-Cookie 但没存属性被浏览器拒绝
已存但请求不带Domain/Path/Secure/SameSite/credentials
请求带了但仍 401Session/Token authority 或服务器验证
跨源环境失败SameSite + credentials + CORS 组合

修复原则

修复真正的 Cookie contract,不要靠:

  • 让用户清全部 Cookie;
  • 把 SameSite 一律改宽松;
  • 关闭 Secure;
  • 前端自己伪造 Cookie Header。

迁移检查

给一个场景:登录接口 200,Response 有 Set-Cookie,但刷新后 /me 仍 401。

闭卷完成:

  1. 先证明 Cookie 是否存下;
  2. 再证明 /me 是否携带;
  3. 分别列出“没存”和“没带”的不同根因;
  4. 如果 Cookie 已携带但仍 401,说明下一层该查什么;
  5. 解释为什么 Application 里有 Cookie 不能直接证明登录态正确。
创建于 2026/4/13 更新于 2026/9/30
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本