自建 Vaultwarden:Chrome 插件登录报「发生意外错误」的排查与修复
问题现象 自建的 Bitwarden 服务(实际是 Vaultwarden),在手机 App、Mac 桌面 App 上都能正常登录使用,唯独 Chrome 浏览器插件登录失败,弹出一个非常笼统的红色报错:「发生错误 / 发生意外错误」。 这种笼统的报错很容易让人往错误的方向排查——怀疑 Chrome 权限、插件缓存、代理、DNS、TLS 证书,甚至怀疑自己密码输错了。但这类问题恰恰最具迷惑性。 根本原因 最新版的 Bitwarden 浏览器插件(2026.4.1 起)在登录时会调用一个新的预登录接口: POST /identity/accounts/prelogin/password 如果自建的 Vaultwarden 版本低于 1.36.0,服务端还没有实现这个接口,请求会返回 404 Not Found,插件便显示「发生意外错误」这种看不出所以然的提示。 为什么手机、Mac App 正常,只有 Chrome 插件失败? 关键在于已登录设备和全新登录流程走的不是同一条路径: 手机 App、Mac App 之前已经登录过,本地保留了会话状态、密钥、访问令牌等缓存,日常使用只是在刷新已有会话,并不会重新走一遍完整的首次登录流程,因此绕开了这个新接口。 Chrome 插件(尤其是新装或重新登录时)必须从头走完整的登录链路:服务器选择 → prelogin → KDF 元数据 → 令牌交换 → 同步 → 本地解锁,这才把 prelogin 接口缺失的问题暴露出来。 一句话总结:旧设备还能用,只能证明"已有会话还活着",并不能证明"首次登录 API 路径是健康的"。 排查方法 查看 Vaultwarden 容器日志,确认是否是 prelogin 接口 404: docker logs -f <容器名> 2>&1 | grep -Ei 'prelogin|connect/token|404|400|ERROR|WARN' 如果在 Chrome 插件点击登录时,日志里出现类似: ...