DSH Web 客户端默认根据 hostname 是否为回环(localhost / 127.x)来决定是否启用 Host 设置持久化。当使用远程域名访问时,设置镜像会降级为 memory,导致 Models 页面在联表提供方目录时报错。该插件在设置面板提供可视化配置入口,通过配置受信域名,联动 API 放行与页面受信判定,修复此问题。
是什么¶
这是一个 DSH Web 远程受信访问插件,由 liujuntao123 维护。它解决了经反向隧道或自定义域名远程访问 DSH Web 时,Models / 设置页报 settings are unavailable in this browser 的问题。
核心功能¶
- 设置面板可视化配置:在设置面板 → 通用 → “远程受信域名”中,以标签列表形式增删受信域名(支持
host或host:port)。每个域名标签会显示当前页面的受信状态(已受信 / 未受信)。 - 一处配置,两处联动:配置写入后即时生效,无需重启。
- API 放行:域名列表并入
connection.trustedHosts,用于 /api 的 Host/Origin fence 校验。 - 页面判定:每次渲染 index 时注入一段内联脚本,检查
location命中列表后,声明window.__DSH_TRANSPORT__ = { ownsHost: true },从而允许该页面的设置持久化。
- API 放行:域名列表并入
- 匹配语义与服务端一致:无端口条目匹配任意端口,带端口条目要求端口精确匹配。支持 IPv6 字面量(如
[::1]:8080)。 - 输入容错:自动剥离
https://前缀、路径及查询参数,统一转为小写。拒绝非法字符、userinfo(如user@host)及非数字端口。
安装¶
使用官方命令安装:
dsh plugin --profile web add git+https://github.com/liujuntao123/dsh-trusted-page.git
使用步骤¶
- 在本机打开 DSH Web(
http://127.0.0.1:<port>)。 - 进入 设置 → 通用 → “远程受信域名”,输入你的远程域名(如
dsh.example.com),回车或点击“添加”。 - 用该域名打开 DSH Web(需确保该域名已路由到你的 DSH 服务),执行页面强刷(Ctrl+F5)。
- 进入 设置 → 模型,提供方目录应正常加载,不再报错。
此时,远程页面上也能看到对应的设置行(显示状态取决于当前页面是否受信)。
注意事项¶
- 权限与路由:本插件只放宽“已认证的设置面板中声明的域名”的访问权限,该域名必须已经路由到 DSH 服务(如 Cloudflare Tunnel、nginx 反代、LAN 直连),插件不负责路由配置。
- 安全模型:
- 受信域名之外的
/api请求仍会被 Host/Origin fence 拦截(403)。 - 页面本身仍需浏览器会话 Cookie 或启动 token 交换,未授权来源的 index 请求会被拦截(401)。
- 受信域名之外的
- 依赖版本:在
@deepseek-ai/dsh0.1.5-rc.1 上开发验证。插件依赖webserver/index-inject注入事件与__DSH_TRANSPORT__.ownsHost读取约定,若上游语义改变,插件会安全退化。