浏览器拿一个一次性 code,再由服务端把它兑成访问令牌。

OAuth 授权码用码换令牌

让令牌只留在后端、只把短命的一次性 code 交给浏览器,能从很大程度上缩掉令牌在 URL 与日志里被偷走的地盘。 浏览器只拿 code access token 不该出现在浏览器里,这正是授权码流程存在的理由。浏览器跳转到授权端点、看到确认页,然后带着一个短命的一次性 code 回到回调地址——它从头到尾拿不到 token 本身。因为真正拿 token 的是后端:后端拿着 code,配上自己的 client secret,去 token 端点换。这个分工——浏览器只搬运 code,后端才掌握 secret——就是整个流程的意义所在。 后端负责兑换 交换发生在服务端,意味着 access token 只落在后端手里:浏览器既不会把它记进历史,客户端一次脚本 bug 也不会把它泄漏出去。后端构造 code + client_secret + redirect_uri 发给 token 端点,换回一个 JSON 的 access token(可选地还有 refresh)。这也解释了为什么没有 client secret 的单页应用(SPA)与原生应用,在这里总是敏感目标:它们没有 secret,所以需要哪「authorization code + PKCE」的组合,而不是普通 code flow。code flow 用一次后端的往返,换来 token 不经过浏览器这份安全。 ...

十月 20, 2027 · 2 分钟 · XB Field Notes