Repository navigation
[Bug] DSH 桌面端认证崩溃:dsh-auth-* Cookie 累积导致请求头超限 #10809
Unanswered
dichenbaiyulou
asked this question in
Q&A
Replies: 4 comments
|
我也遇到了这个问题,实测临时修复方案有效。 |
0 replies
|
一样的问题 |
0 replies
|
草台班子之cookies超过了上限,我也遇到了.原因是@deepseek-ai\dsh-desktop\Network\Cookies里面积攒了大量的cookies超过Node 16 KiB 的请求头上限,host 因此返回 431,删除额外的cookies即可 |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
现象描述
应用启动即崩溃,日志(crash-*-host.log)连续多次报错:
text
Error: desktop welcome: Web authentication failed
at connectDesktopWelcome (...app.asar/lib/main.js:8886:31)
环境:Windows (win32 x64),Electron 44.7.0,Node 24.21.0,DSH 桌面端 0.2.1-rc.2。
根因分析
经逆向 app.asar 及抓包验证,问题出在 Electron 会话 Cookie 罐中累积了过多的陈旧 dsh-auth-* Cookie,导致认证请求头超限被服务端拒绝。
每次启动应用时,服务端 Set-Cookie 签发的 Cookie 名都是随机的(dsh-auth- + 43位随机字符),且有效期长达 30 天。
主进程使用 net.fetch(..., { credentials: "include" }) 请求时,会自动带上所有匹配 127.0.0.1 的 Cookie。
实测发现 Cookie 罐(SQLite)中积压了 71 条历史遗留的 dsh-auth-* Cookie(约 20KB),超出了 HTTP 服务端请求头大小上限,导致请求被拒绝(返回 401),进而抛出认证失败错误。
佐证:清理 Cookie 库后,应用恢复正常启动。
临时修复方案(SQL 清理)
关闭所有应用进程,打开 %APPDATA%@deepseek-ai\dsh-desktop\Network\Cookies(SQLite),执行:
sql
DELETE FROM cookies
WHERE host_key LIKE '%127.0.0.1%' AND name LIKE 'dsh-auth-%';
清理后重启应用,握手成功,Cookie 罐仅保留本次启动新签发的一条。
给官方的修复建议
固定 Cookie 名(例如统一使用 dsh-auth),让新 Set-Cookie 覆盖旧值。
启动时主动清理:在主进程握手前后,调用 session.defaultSession.cookies.remove() 清理陈旧 Cookie。
认证接口可考虑返回 431 Request Header Fields Too Large 并在日志中明确记录,便于排查。
可选:设为会话级 Cookie(不发 Max-Age),退出时自动清除。
附加
dsh-startup-auth-crash-report-public.md
dsh-auth-cookie-clean.py
dsh-auth-cookie-inject.py
All reactions