BookOrbit 升级后 EPUB 阅读 401 错误解决方法
问题描述
BookOrbit 升级后,PDF 和 MOBI 格式书籍阅读正常,但 EPUB 格式书籍无法阅读,页面显示空白,仅显示进度提示(如 "Resumed at 3% - Chapter 1")。
浏览器开发者工具(F 12)中,EPUB 阅读请求返回 401 Unauthorized 错误:
GET /api/v 1/epub/58/file/META-INF/container.xml?fileId=49
Status: 401 Unauthorized
问题原因
1. 根本原因
浏览器缓存了旧版本的前端 JavaScript 文件,导致 Token 发送逻辑出错。
升级前后前端代码发生了变化(如 token 获取方式从同步变为异步),但浏览器仍使用缓存的旧 JS 文件,导致 authorization 请求头发送的不是有效的 JWT Token,而是一段 JavaScript 函数代码:
错误(缓存旧版 JS 导致):
authorization: Bearer async function l(e,n){...}
正确(新版 JS 正常发送):
authorization: Bearer eyJhbGciOiJIUzI 1 NiIs...
2. 为什么 PDF/MOBI 正常,EPUB 出错?
PDF/MOBI 请求路径为 /books/xxx.pdf,不经过 API 认证(Nginx 直接处理)
EPUB 请求路径为 /api/v 1/epub/.../container.xml,需要 JWT 认证
EPUB 阅读需要解析内部文件结构,必须经过 API 认证,因此 401 错误导致内容无法加载。
解决方案
快速解决(推荐)
清除浏览器缓存并重新登录:
- 打开浏览器开发者工具(F 12)
- Application → Storage → Clear site data(清除所有站点数据)
- 或直接使用无痕/隐私模式访问
- 重新登录 BookOrbit
清除缓存后,浏览器会从服务器加载新的 JS 文件,Token 发送恢复正常。
强制刷新快捷键:
Windows/Linux:Ctrl + F 5
macOS:Cmd + Shift + R
验证是否修复
- 登录 BookOrbit
- 打开 F 12 → Network 标签
- 点击阅读 EPUB 书籍
- 查看 /api/v 1/epub/... 请求的 authorization 头是否正确:
authorization: Bearer eyJhbGciOiJIUzI 1 NiIs...
预防措施
1. 升级后强制刷新
每次升级后,建议用无痕模式测试,或按 Ctrl+F 5 强制刷新页面。
2. 配置 Nginx 缓存策略
在 Nginx 配置中为 JS/CSS 文件设置合理的缓存时间:
location ~* .(js|css)$ {
expires 1 h;
add_header Cache-Control "public, must-revalidate";}
3. 升级公告提醒
在升级公告中提醒用户:
升级后如遇 EPUB 阅读异常,请清除浏览器缓存或使用无痕模式访问。
总结
现象:PDF/MOBI 正常,EPUB 报 401
原因:浏览器缓存旧版 JS,Token 发送错误
解决方案:清除缓存 + 重新登录
现象:EPUB 页面空白,显示进度提示
原因:401 拦截了 EPUB 解析 API 请求
解决方案:同上
现象:authorization 头显示 async function...
原因:缓存旧代码导致
解决方案:清除缓存即可
核心要点:BookOrbit 升级后,前端代码发生变化,浏览器缓存的旧 JS 文件会导致 Token 发送错误。清除缓存重新加载新版本即可解决。