crypto.randomUUID is not a function?DeepSeek Harness 网页打不开排查

故障排查发布于 2026-08-27作者: DSH Plugin 插件中心
DeepSeek HarnessDSH webcrypto.randomUUID is not a function安全上下文网页打不开
DeepSeek Harness 网页报 crypto.randomUUID is not a function?crypto.randomUUID() 只在安全上下文存在,IP 明文 HTTP 不算。用 window.isSecureContext 判断,SSH 端口转发、本机访问、配 HTTPS 三选一。

DeepSeek Harness 网页报 crypto.randomUUID is not a function、换好几个浏览器都没用——根因不是浏览器,而是访问方式:crypto.randomUUID() 只在安全上下文里存在(https://,或 http://localhost / http://127.0.0.1),用 IP 地址走明文 HTTP 访问(如 http://192.168.1.50:3080)不算安全上下文,该页面里 crypto.randomUUID 就是 undefined。 按 F12 敲 window.isSecureContext 十秒定案,SSH 端口转发、本机访问、配 HTTPS 三选一解决。

crypto.randomUUID is not a function 长什么样

报错固定为 crypto.randomUUID is not a function,发生在打开 DSH 的 web 界面时,且与浏览器版本、Linux 发行版无关。 报告者实跑遇到(讨论原文):

  1. 环境:Linux 9,安装后打开 web 界面直接报错;
  2. 报告者切换了好几种浏览器,全部一样报错——这是符合预期的,因为问题不在浏览器;
  3. 报错点名的 crypto.randomUUID 是一个生成 UUID 的 Web API,页面一旦拿不到它,渲染流程就直接断掉。

根因:crypto.randomUUID 只在安全上下文里存在

浏览器对安全上下文的定义只有两种:https://,或者 http://localhost / http://127.0.0.1。用 IP 地址走明文 HTTP(http://192.168.1.50:3080 这类)不算安全上下文,crypto.randomUUID 在那种页面里就是 undefined来源MDN 安全上下文定义)。

这跟浏览器版本无关、跟 Linux 发行版无关,所以「换浏览器解决不了」是必然结果。crypto.randomUUID仅限安全上下文的 Web API,浏览器只给满足条件的页面暴露它。

10 秒确认:window.isSecureContext

在出问题的页面按 F12 打开控制台,敲 window.isSecureContext,按返回值分支:

  • 返回 false → 就是这个原因,按下面三条解法任选一条;
  • 返回 true → 不是这个原因,那更可能是 Node 版本太老globalThis.crypto 是 Node 19 才默认全局可用),把 node -v 的输出贴出来确认。

这一条命令能在 10 秒内给出确定答案,不用瞎猜。

三种解法:从省事到正规

核心思路是把页面变成安全上下文:让浏览器看到的是 localhost/127.0.0.1,或者给页面配 HTTPS。 按顺序选:

  1. SSH 端口转发(最省事,不用改任何配置):在你自己的电脑上执行
bash
ssh -L 3080:127.0.0.1:3080 你的用户名@服务器地址

然后本机浏览器访问 http://localhost:3080——浏览器看到的是 localhost,安全上下文成立,问题直接消失。这也是社区里跑无头服务器的人常用的姿势,不是将就的办法;

  1. 在服务器本机上访问 http://127.0.0.1:3080(如果那台机器有桌面环境的话);
  2. 配 HTTPS(长期正规做法):前面挂一个 Nginx / Caddy 反代,用自签名或 Let's Encrypt 证书。Caddy 配一行就行,之后任何机器都能通过 https:// 访问。

注意事项

  1. 别在换浏览器上浪费时间——问题在访问协议,不在浏览器。
  2. 局域网内其它机器要访问时,优先走第 1 条(各自 SSH 转发)或第 3 条(统一 HTTPS),不要继续用 IP 明文 HTTP。
  3. window.isSecureContext 返回 true 仍报错,检查 Node 版本(≥19 才有默认全局 crypto)与 dsh 版本。
  4. 同类网页异常还汇总在《DeepSeek Harness 插件报错合集:DSH plugin 不加载、Web UI 异常与会话缓存修复》里。

来源:Discussion #4653MDN 安全上下文MDN Crypto.randomUUID()

常见问题

用 http://192.168.1.50:3080 访问 DeepSeek Harness 网页报 crypto.randomUUID is not a function 是什么原因?

crypto.randomUUID() 只在安全上下文里存在:https://,或 http://localhost / http://127.0.0.1。用 IP 地址走明文 HTTP 访问(如 http://192.168.1.50:3080)不算安全上下文,该页面里 crypto.randomUUID 就是 undefined(来源)。

换了好几个浏览器都报 crypto.randomUUID is not a function,为什么都一样?

因为这不是浏览器问题,是访问方式问题:任何浏览器在非安全上下文页面里都没有 crypto.randomUUID。换浏览器当然无效,这是符合预期的。

怎么 10 秒确认是不是安全上下文问题?window.isSecureContext 返回 false 或 true 分别怎么处理?

在出问题的页面按 F12 打开控制台,敲 window.isSecureContext:返回 false 就是安全上下文问题,按三条解法任选;返回 true 则更可能是 Node 版本太老(globalThis.crypto 是 Node 19 才默认全局可用),把 node -v 输出贴出来确认。

怎么解决 crypto.randomUUID is not a function?ssh -L 3080:127.0.0.1:3080 端口转发怎么用?

三选一:SSH 端口转发最省事(ssh -L 3080:127.0.0.1:3080 用户名@服务器地址,本机访问 http://localhost:3080);服务器本机直接访问 http://127.0.0.1:3080;长期正规做法是前面挂 Nginx/Caddy 反代配 HTTPS。

crypto.randomUUID is not a function 这个问题和 DSH 本体或插件有关吗?

无关。这是 Web 平台的安全上下文规则:浏览器只给 https 或 localhost/127.0.0.1 页面提供 crypto.randomUUID。DSH 的 web 服务是它自家组件,装什么插件、换什么发行版都不改变这个规则。

来源