roojay/dsh-trusted-host-proxy-403-fix ↗★ 0
dsh-trusted-host-proxy-403-fix
Fix privileged /api 403 when DeepSeek Harness Web UI is reached through a reverse proxy Host already listed in --trusted-host; make settings persistence work for those hosts too. Not an authentication layer.
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:roojay/dsh-trusted-host-proxy-403-fix说明文档
阅读完整 README ↗dsh-trusted-host-proxy-403-fix
English | 中文
适用于 web profile 的独立 DeepSeek Harness 插件,兼容 @deepseek-ai/dsh@0.1.0-rc.6。
dsh web(即 dsh --profile web)监听本机回环地址。可以多次传入 --trusted-host,添加 /api 浏览器请求安全检查所接受的受信任主机。请求中的 Host 与其中一项匹配时,非特权 API 方法即可正常访问。
Node.js 端的 /api 处理器会用空的 trustedHosts 列表再次检查特权方法,因此这些方法只能从回环地址访问。反向代理可以通过已配置的主机访问其他 API 方法,但下面 15 个方法仍会被拒绝。代理保留公网 Host 请求头时,设置 → 模型会报错:
transport failure for /api/settings.describe: HTTP 403
本插件为每个特权方法注册一条精确匹配的 /api/ 路由,并使用普通 /api 共用的 trustedHosts 列表检查请求。它保留官方 connection 插件行,也不提供身份认证。官方的主机检查只控制哪些主机名可以访问 API,不会验证用户身份;Web 传输层本身也没有内置认证。
受信任主机下的设置持久化
上面的 403 修复打通了特权 RPC,但浏览器仍会把非回环页面视为不受信任,让每个设置命名空间(语言、外观、Composer Enter 等)运行在 "memory" 持久化模式下:选择只在当前页面生效,刷新后静默丢失。
本包浏览器半区会在特权 RPC 可达时把这些控制器升级为 host 持久化:
- 它补丁
SettingsScopeController.prototype.enqueue,让 "memory" 短路不再吞掉读写。未安装服务端半区(或主机不受信任)时 RPC 会以 403 失败,官方控制器保持原有的失败关闭(捕获并忽略)行为——不安装本包的部署行为完全不变。 - 它把通过
locale与theme服务可达的控制器就地升级(persistence 是普通实例字段),并触发一次重新读取,使已保存的偏好升级后首屏即生效,无需用户重新选择。
浏览器半区是同一行里的 dsh.client 条目:无需额外配置。dsh.client.inject 使用官方包名(@deepseek-ai/dsh-client-locale、@deepseek-ai/dsh-client-ui-theme、@deepseek-ai/dsh-client-ui-settings),以保证构图里能 require 到 SettingsScopeController。enqueue 补丁对照 @deepseek-ai/dsh@0.1.0-rc.6;升级 dsh 后必须重核官方控制器实现。
安装后,语言(以及外观、Composer Enter)偏好会写入设置文档(如 harness 家目录下的 ),页面刷新与 Web 进程重启后依然保留。