Repository navigation
[Bug][Windows Desktop 0.2.1-rc.3] 本地认证 Cookie 随端口积累,HTTP 431 导致启动失败 #10868
jeffreyren1
started this conversation in
General
Replies: 0 comments
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.
环境
0.2.1-rc.3win32 x6444.7.024.21.0DeepSeek Harness.exe启动失败现象
桌面程序连续多次启动失败,崩溃日志中的错误为:
错误发生于
connectDesktopWelcome()。通过 Chromium NetLog 检查,对本地 Host 的启动认证请求实际收到了:本机实际测量
host_key = '127.0.0.1'的记录有 73 个,其中名称以dsh-auth-开头的认证记录有 68 个。Cookie: [16102 bytes were stripped]。这是 NetLog 对被隐藏 Cookie 数据的字节数记录;加上其他请求头部后,请求超过服务端限制。require('node:http').maxHeaderSize,结果为 16384。127.0.0.1,NetLog 中对应的代理决策为DIRECT。诊断只读取了 Cookie 名称、数量及长度,未将 Cookie 值或启动认证令牌包含在本讨论中。
从当前安装包核对到的认证行为
检查对象为实际安装的
resources/app.asar,桌面主进程入口为lib/main.js,认证实现位于内置的@deepseek-ai/dsh-client-connection/lib/index.js。cookieName(authority)以dsh-auth-加上sha256(authority)的 Base64URL 结果作为名称;HTTP 的authority包含端口。cookieMaxAgeDays默认值为 30,签发 Cookie 时设置Max-Age和Expires。connectDesktopWelcome()通过 Electronnet.fetch(),使用credentials: "include"发起认证;后续账户连接也从session.defaultSession.cookies读取 Cookie。dsh-auth-*记录的逻辑。connectDesktopWelcome()对失败响应统一抛出Web authentication failed,没有在该错误中保留实际 HTTP 状态码。结合源码和实际请求,可以解释这次失败:端口变化会产生不同名称的认证 Cookie,历史记录在有效期内继续保留;同一主机的 Cookie 会跨端口发送,最终使认证请求的头部超过限制。
已完成的恢复验证
做了两项真实启动验证:
保留原有后端配置,使用独立的临时浏览器数据目录启动。认证返回
303,后续文档和配置接口返回200。完全退出程序,备份原始 Cookie 数据库,然后仅删除同时满足以下条件的记录:
实际删除 68 条记录,其余 37 个 Cookie 的完整数据库记录在重新启动前已逐项核验保持原样,数据库完整性检查通过。
随后使用原有浏览器数据目录和原有后端配置启动:
303,重定向后的页面返回200。settings/describe、llm/listConfigurableProviders、credentials/describe、account/getState均返回200。101 Switching Protocols。431,也未产生新的崩溃日志。上述恢复没有修改程序代码、插件代码或网站持久浏览资料。没有上传原始 Cookie 数据库或完整 NetLog。
希望修复的行为
431。相关讨论
All reactions