操作指南 · 开发者
如何在 Chrome DevTools 中解码 JWT 并查看过期时间
简短回答
打开一个能从真实请求捕获令牌的 DevTools 面板,在本地解码 header、payload 和各项声明——iat 和 exp 渲染成可读日期,过期令牌会被标出。解码不等于验证:签名不做校验,面板也明说了这一点。一切都不出你的浏览器。
- 1
在调用你 API 的标签页上打开 DevTools,切换到 AuthRoam 面板。
- 2
操作页面让它发出请求,然后在列表里选中捕获到的令牌。
- 3
读取解码后的 header(算法、类型)和以纯 JSON 呈现的 payload 声明。
- 4
在声明表里查看 iat 和 exp 的可读日期,过期令牌会被标出。
- 5
记住解码给不了什么:签名未经验证——信任判断应放在你的服务器上。
读 JWT 的常见做法,是把令牌从请求里复制出来,粘进某个在线解码网站。能用,但这等于把一枚有效凭证交给一个你无法掌控的网站。在 Chrome 里,整件事可以完全在本地完成:在 DevTools 里从真实请求捕获令牌,解码 header 和 payload,把过期时间读成真正的日期——令牌全程不出你的浏览器。

iat 和 exp 变成可读日期的声明表。从真实请求捕获令牌
安装 AuthRoam,在与你的 API 通信的标签页上打开它的 DevTools 面板。它捕获页面实际发送的凭证——bearer 令牌、Cookie 凭证、JWT——请求发生时逐条列出。你解码的是线上真实传输的那枚令牌,而不是复制进表单、可能半路被截断的副本。
读取 header 和 payload
选中一枚捕获的令牌,它当场就被解码。header 显示算法和类型——比如 RS256 和 JWT——payload 则把各项声明显示为纯 JSON:iss、sub、aud、iat、exp。解码发生在你的浏览器里,令牌绝不会被发往任何解码服务。
把过期时间读成日期,而不是时间戳
exp 和 iat 是 Unix 时间戳,没有谁能一眼读懂 1783864440。声明表把两者都渲染成日期,已经失效的令牌会被标为过期。捕获列表在每枚令牌上以徽章带出同样的信息——“1 小时后”,或者它已经死了多久——于是一枚过期令牌,在你为一个根本不是代码问题的 401 排查二十分钟之前就已现形。
解码不等于验证
有一点必须说清楚:AuthRoam 只解码令牌,并不验证签名——面板在声明下方也明说了。解码出的 payload 告诉你令牌声称了什么,而不是这些声称真实且未被篡改。验证需要签发方的密钥,属于你的服务器该做的事。对调试来说——缺哪个 scope、会话何时到期——解码正是你需要的;但对信任判断来说它不够格,任何客户端解码器都不该假装够格。
不透明令牌保持不透明
不是每枚 bearer 令牌都是 JWT。不透明的会话令牌没有可解码的 payload,AuthRoam 会把它标为 Opaque,而不是凭空捏造并不存在的结构。
一切留在本地
整个流程 100% 本地、零遥测:令牌的捕获、解码与存储只发生在你的浏览器里,连 Pro 许可也是本地验证,不会向服务器回传。