1. 背景
最近因为云服务器到期,在另一个云环境安装openclaw 2026.4.15版本后,互联网访问gateway 仪表盘出现了一系列问题,总被浏览器抛出一句control ui requires device identity (use HTTPS or localhost secure context)拦住去路?反复核对令牌、重启网关,却依然无法连接?别慌,这并非 OpenClaw 本身的故障,而是浏览器的安全策略给你设下的 "隐形门槛"。
第一关:局域网无法访问 (端口监听问题)
❌ 现象描述
OpenClaw Gateway 服务已启动,日志显示正常监听 18789 端口。但在同一局域网的其他电脑浏览器中输入 http://<云服务器IP>:18789,却显示无法连接 或连接超时。
💡 原因分析
默认情况下,某些服务可能只绑定在 localhost (127.0.0.1) 上,这意味着它只接受来自本地服务器内部的请求,拒绝外部局域网设备的访问。
✅ 解决方案:修改 Bind 模式
需要修改网关配置文件,将其监听地址改为 0.0.0.0(允许所有网卡接口访问)。
-
编辑配置文件(位于
~/.openclaw/openclaw.json):sudo vi ~/.openclaw/openclaw.json -
找到
gateway的bind部分,修改bind模式为lan:"gateway": { "port": 18789, "mode": "local", "bind": "lan", -
保存并重启服务:
sudo openclaw gateway restart -
验证 :现在应该可以在局域网其他设备上通过
http://<IP>:18789访问了(虽然接下来可能会报跨域错误,但这证明网络通了)。
第二关:跨域错误 CORS (白名单配置)
❌ 现象描述
网页能打开了,但会话界面显示错误信息,页面功能异常,提示类似:
`origin not allowed (open the Control UI from the gateway host or allow it in gateway.controlUi.allowedOrigins)
💡 原因分析
浏览器的同源策略 (Same-Origin Policy) 阻止了网页向不同源(即使只是 IP 不同)发起请求。OpenClaw 默认可能只允许特定的域名访问,或者未配置允许的 Origin 列表。
✅ 解决方案:配置 Gateway 白名单
在配置文件中明确添加您的局域网 IP 或允许所有来源(测试环境)。
-
再次编辑配置文件:
sudo vi ~/.openclaw/openclaw.json -
找到
gateway的allowedOrigins部分,添加访问地址:"controlUi": { "allowedOrigins": [ "http://localhost:18789", "http://127.0.0.1:18789", "http://公网IP:18789" ] }, -
重启服务:
sudo openclaw gateway restart
第三关:安全上下文限制 (必须启用 HTTPS)
❌ 现象描述
跨域问题解决后,页面弹出红色警告或无法建立 WebSocket 连接,提示:
Control UI requires device identity (use HTTPS or localhost secure context)
现代浏览器(Chrome, Edge, Safari 等)出于安全考虑,禁止在非安全上下文(即非 HTTPS 且非 localhost)中使用某些敏感 API(如麦克风、摄像头、剪贴板,以及 OpenClaw 所需的某些身份验证机制)。
✅ 解决方案:修改访问IP为 HTTPS
- 找到
gateway的allowedOrigins部分,修改外网访问地址为https:
"controlUi": {
"allowedOrigins": [
"http://localhost:18789",
"http://127.0.0.1:18789",
"https://公网IP:18789"
]
"allowInsecureAuth": true
},
- 增加证书地址(不需要生成证书)
"tls": {
"enabled": true,
"certPath": "/root/.openclaw/certs/cert.pem",
"keyPath": "/root/.openclaw/certs/key.pem"
}
第四关:Pairing Required (设备身份验证)
❌ 现象描述
一切配置就绪,HTTPS 也通了,但页面显示:

💡 原因分析
这是 OpenClaw 的零信任安全机制。即使通过了 HTTPS 验证,网关仍不认识这台浏览器设备。首次连接必须经过管理员显式批准,防止未授权控制。
✅ 解决方案:命令行审批法
这是最标准、最安全的解决方式。
1. 查看待审批设备
保持浏览器页面打开(触发请求),在终端执行:
openclaw devices list
输出示例:
┌──────────────────────────────────────┬──────────────┬─────────────────────┐
│ Request ID │ Role │ Created At │
├──────────────────────────────────────┼──────────────┼─────────────────────┤
│ 4f9db1bd-a1cc-4d3f-b643-2c195262464e │ browser │ 2026-03-10 22:22:01 │
└──────────────────────────────────────┴──────────────┴─────────────────────┘
2. 批准设备
执行:
openclaw devices approve 所复制的request Id
看到 ✓ Approved 后,刷新浏览器页面,即可正常进入控制界面!
总结:完整配置清单
为了方便大家对照检查,以下是解决所有问题后的 openclaw.json 核心配置参考:
"gateway": {
"port": 18789,
"mode": "local",
"bind": "lan",
"tls": {
"enabled": true,
"certPath": "/root/.openclaw/certs/cert.pem",
"keyPath": "/root/.openclaw/certs/key.pem"
},
"controlUi": {
"enabled": true,
"allowedOrigins": [
"http://localhost:18789",
"http://127.0.0.1:18789",
"https://{公网IP}:18789"
],
"allowInsecureAuth": true
},
"auth": {
"mode": "token",
"token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"tailscale": {
"mode": "off",
"resetOnExit": false
},
"http": {
"endpoints": {
"chatCompletions": {
"enabled": true
}
}
}
},