Repository navigation
桌面版启动约 72 次后打不开:dsh-auth-* cookie 每次启动多存一条,Cookie 头涨过 16 KiB 后被 431 拒绝 #12978
Replies: 2 comments
|
独立复现 + 两点补充证据(0.2.2-rc.1 → 0.2.2-rc.2,Windows x64): 1. 症状签名与帖内机制吻合,并补一个定位细节 同一晚三次确定性启动失败(UTC 13:48:12 / 13:48:21 / 13:56:03, 细节:启动序列里第一步 2. rc.2 旁证已含修复 未清理 备注:当晚机器上还叠加了 #9994 的完整性标签复发(两个问题同时在场,症状互相掩护,容易误判方向),留此记录供后来人对症。 |
|
再补一个反例:rc.2 装上了但起不来,已经回退 rc.1。 环境:Windows x64,Electron 44.7.0,Node 24.21.0,zh-CN;profile 里有自定义 bundle(command-guard、browser-skill、computer-use、cookie-sweep 等),profile 的 升级到 0.2.2-rc.2 后每次启动都失败(三次,其中一次点了「禁用第三方插件」),错误一致: crash 日志里对得上的是:
也就是组合是 rc.2 的 app + rc.1 的 profile 包, 想确认两点:
回退 0.2.2-rc.1 后一切正常。需要的话我可以把三次 crash 日志( |
Uh oh!
There was an error while loading. Please reload this page.
桌面版 DSH 每次启动新建一个不同名字的本地 cookie,约 72 次后打不开(HTTP 431)
C:\Deepseek Har)现象
用同一份配置启动约 70 多次之后,DSH 桌面版彻底打不开:窗口起来但界面加载失败,本地服务返回
431 Request Header Fields Too Large。删掉 cookie 库后立刻恢复,之后从 0 重新累积。
根因
DSH 桌面版在每次启动时给本地服务(
127.0.0.1,端口每次启动随机)下发一条新的登录 cookie:Chromium 的 Cookie 唯一索引是:
名字每次都变、端口每次都变,所以任何两条都不会撞键,旧记录永远不会被覆盖,库里的行数单调增长。
每条占 Cookie 请求头约 227 字节;Node 的
http默认maxHeaderSize是 16 KiB,于是:实测数据(2026-11-11 21:21,清空前)
host_key全是127.0.0.1,name64 个全不相同,source_port64 个全不相同影响
撞到 431 之后,普通用户看到的现象就是“DSH 永远打不开”,而且:
Copy-Item、FileShare::ReadWrite、esentutl /y全部 sharing violation),不彻底退出进程就连备份都做不了;建议(任一即可)
dsh-auth-+sha256(authority),而 Host 用--port 0启动、端口每次不同,于是每次启动都是一条新 cookie。如果 authority 只用于绑定签名、不用于区分 cookie 身份,可以让 cookie 名固定、把 authority 放进签名载荷;
dsh-auth-*过期:在 303 那条响应里追加Set-Cookie: <旧名>=; Max-Age=0; Path=/; HttpOnly; SameSite=Strict(这条能被插件做到,但由官方做更干净);
dsh-auth-*行数/头部大小超阈值,主动清理一条并给可读提示,而不是让用户只看到 431;16 KiB 是 Node 解析器层的默认值,超过之后任何 handler(包括
DSH 自己的)都不会运行,所以提示只能从「更早一步」发出。
附:本地绕过(仅供理解现象,不是修复)
启动前把
%APPDATA%\@deepseek-ai\dsh-desktop\Network\Cookies里dsh-auth-*的旧行裁掉(只留最新几条),每次启动前跑一次即可永不撞墙 —— 但这只是绕过,行数仍会继续增长。
All reactions