你在局域网电脑上访问盒子 IP 时遇到 origin not allowed 错误,是因为 OpenClaw 的网关默认只允许从 localhost127.0.0.1 访问控制 UI,来自局域网 IP 的请求被安全策略拦截了。

? 解决方法:将你的访问来源加入 allowedOrigins 白名单

1️⃣ 确认你的盒子 IP 和访问地址

在盒子上执行 ip addr 获取局域网 IP(例如 192.168.1.100)。
你在电脑浏览器中访问的地址是 http://192.168.1.100:18789
注意:这个地址必须完全一致(协议、IP、端口)才能通过校验。

2️⃣ 通过命令行设置白名单

SSH 登录到盒子,执行以下命令(将 192.168.1.100 替换为你的实际 IP):

openclaw config set gateway.controlUi.allowedOrigins '["http://192.168.1.100:18789", "http://localhost:18789", "http://127.0.0.1:18789"]'

如果你想允许局域网内所有 IP 访问(不推荐,有安全风险),也可以设置:

openclaw config set gateway.controlUi.allowedOrigins '["*"]'

但更安全的做法是只添加你需要使用的具体 IP。

3️⃣ 重启网关使配置生效

openclaw gateway restart

4️⃣ 验证配置是否生效

查看当前配置:

openclaw config get gateway.controlUi.allowedOrigins

输出应该包含你刚才设置的 IP 地址。

再次在电脑浏览器中访问 http://192.168.1.100:18789,应该能正常打开控制 UI 了。


❓ 如果还是不行,请检查以下事项

  1. 配置是否真的写入成功
    openclaw config get 确认 allowedOrigins 已包含你的 IP。

  2. 防火墙是否放行 18789 端口

    # 如果使用 ufw
    ufw status | grep 18789
    # 如果使用 iptables
    iptables -L -n | grep 18789

    如果没有放行,执行 ufw allow 18789/tcp 或相应命令。

  3. 网关服务是否正在监听 0.0.0.0

    netstat -tlnp | grep 18789

    应显示类似 0.0.0.0:18789 的监听地址。

  4. 尝试用 curl 测试(在盒子上执行)

    curl http://127.0.0.1:18789

    如果有响应,说明服务正常;如果没有,检查网关状态 openclaw gateway status

  5. 检查浏览器访问的 URL 是否与配置完全一致
    例如配置的是 http://192.168.1.100:18789,就不能用 https 或省略端口。


? 备选方案(如果配置白名单后仍有问题)

  • 使用 SSH 隧道(无需修改配置)
    在你的电脑上执行:

    ssh -L 18789:localhost:18789 root@192.168.1.100

    然后浏览器访问 http://localhost:18789,流量通过 SSH 加密转发,origin 自动为 localhost,不会触发拦截。

  • 临时启用 fallback 模式(不推荐长期使用)

    openclaw config set gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback true
    openclaw gateway restart

按上述步骤操作后,应该能顺利访问控制 UI。如果还有问题,请把 openclaw config get gateway.controlUi.allowedOrigins 的输出和浏览器地址栏的完整 URL 告诉我,我帮你具体分析。