相信使用小龙虾的人应该都遇到过origin not allowed (open the Control UI from the gateway host or allow it in gateway.controlUi.allowedOrigins)问题吧,这是个非常经典的 “跨域安全拦截”(CORS)问题。出现这个提示,说明你正在通过 公网 IP、自定义域名 或者 局域网 IP 访问 OpenClaw 的网页控制台(Control UI),导致触发了OpenClaw的安全机制导致访问被拒绝。原因是:新版本的 OpenClaw 默认只允许通过本机回环地址(localhost或 127.0.0.1)打开控制台。一旦检测到是从外部网络进来的访问请求,就会无情拦截并报出这个“origin not allowed”的错误。解决这个问题的方法很简单,作者目前版本为:OpenClaw 2026.3.28 (f9b1079)

第一步:找到并修改配置文件
首先,你需要进入到部署 OpenClaw 的服务器终端(如果是 Docker 部署,请进入容器内部或直接映射修改)。找到 OpenClaw 的主配置文件,通常路径为:~/.openclaw/openclaw.json ,使用文本编辑器(如 vim或 nano)打开它:vim ~/.openclaw/openclaw.json

第二步:添加白名单地址 (allowedOrigins)
然后在配置文件中找到 gateway这一级,然后在里面添加或修改 controlUi.allowedOrigins字段。把你在浏览器里用来访问 Web UI 的地址(包括协议和端口)塞进去。
{
"gateway": {
"controlUi": {
"allowedOrigins": [
"http://localhost:18789",
"http://127.0.0.1:18789", // 换成你的公网/局域网 IP
"http://my-openclaw.com:18789" // 换成你的域名
]
}
}
}
![{
"gateway": {
"controlUi": {
"allowedOrigins": [
"http://localhost:18789",
"http://127.0.0.1:18789", // 换成你的公网/局域网 IP
"http://my-openclaw.com:18789" // 换成你的域名
]
}
}
}](https://xiaozou123.cn/wp-content/uploads/2026/05/1777777424-image.png)
第三步:解决可能的“安全上下文”拦截
如果你添加完上面的白名单后,还是连不上,并且控制台报类似control ui requires device identity (use HTTPS or localhost secure context)。为了安全起见,OpenClaw 强制要求非本地访问必须使用 HTTPS。如果你只是临时在内网测试,不想折腾 SSL 证书,可以在刚才的 controlUi配置里再加一行,强行关闭这个限制:
"controlUi": {
"allowedOrigins": ["http://你的IP:18789"],
"allowInsecureAuth": true, // 允许非HTTPS的鉴权
"dangerouslyDisableDeviceAuth": true // 危险操作:在非安全上下文下禁用设备认证
}
!["controlUi": {
"allowedOrigins": ["http://你的IP:18789"],
"allowInsecureAuth": true, // 允许非HTTPS的鉴权
"dangerouslyDisableDeviceAuth": true // 危险操作:在非安全上下文下禁用设备认证
}](https://xiaozou123.cn/wp-content/uploads/2026/05/1777777475-image.png)
第四步:重启服务使配置生效
改完配置后,一定要重启一下 OpenClaw 网关才能生效,常规 npm 安装环境:
openclaw gateway restart
Docker环境
docker restart openclaw

第五步:设备配对安全机制触发
遇到 pairing required 提示,说明 OpenClaw 的设备配对安全机制被触发了。这是一件好事,意味着你的网关受到了保护,不允许未知设备随意连接。当你从一个新的浏览器、新的设备或者清除了缓存后访问 Web UI 时,Gateway 会拦截该连接并要求管理员(也就是你)进行授权。
解决这个问题有两种主要思路:“正规军路线”(安全推荐) 和 “懒人捷径”(适用于本地/内网测试)。
方案一:“正规军路线”—— 手动批准设备(推荐)
这种方法最安全,授权后该浏览器/设备就会被永久信任(除非你清除浏览器缓存或更换设备)。你需要在部署 OpenClaw 的服务器或容器内执行以下命令,你会看到一个 Pending(待授权)列表,里面会有一台刚刚尝试连接你的设备记录:
openclaw devices list

从上一步的列表中,复制那个陌生的 Request ID,然后执行批准命令:
openclaw devices approve
如果你确定只有一台设备在等待,可以直接用 --latest参数一键批准最新的请求:
openclaw devices approve --latest

方案二:“懒人捷径”—— 关闭配对检查(仅限内网/本机)
在新版本(特别是 2026.2.21 之后)中,它确实经常“失效”。打开你的 ~/.openclaw/openclaw.json配置文件(Docker 环境可能需要进入容器或映射路径)。
{
"gateway": {
"port": 18789,
"auth": {
"token": "你的网关令牌"
},
"controlUi": {
"allowInsecureAuth": true // 加上这一行
"dangerouslyDisableDeviceAuth": true // 加上这一行
}
}
}
保存文件后,重启你的 OpenClaw 服务(或 Docker 容器):
openclaw gateway restart
如果在操作过程中遇到以下特殊情况,可以参考解决:
- Request ID 过期了:配对请求只有 5分钟 的寿命。如果你在网页打开后去喝了杯咖啡才去敲命令,可能会发现 ID 失效了。只需在网页上点击 Connect 重新发起请求,然后火速去服务器执行
openclaw devices approve --latest即可。 - Docker 容器名不对:有些一键脚本创建的容器名可能不是默认的
openclaw-gateway。可以先运行docker ps查看准确的容器名,然后再执行docker exec -it <实际容器名> openclaw devices list。

Comments NOTHING