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讀取約定,若上游語義改變,插件會安全退化。