ClawBot怎么处理跨域请求问题?CORS配置代码自动生成
ClawBot部署中CORS错误需在代理层、网关层、Nginx层或Ollama层配置跨域响应头,支持命令行一键生成多层配置。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜
如果您在部署ClawBot时遇到前端页面无法调用后端API、控制台报出Access to XMLHttpRequest at ... blocked by CORS policy错误,则说明浏览器因同源策略拦截了跨域请求。以下是针对ClawBot场景的多种CORS处理方法,覆盖代理层、网关层与后端服务层配置。
一、启用ClawBot内置代理网关的CORS透传
ClawBot作为Qwen3-32B模型的前端代理网关,默认不主动处理CORS头,但可通过启动参数强制注入响应头,使所有转发请求携带合法CORS标识。该方式无需修改Ollama或Qwen服务本身,适用于Docker容器化部署环境。
1、停止当前运行的ClawBot服务:执行clawdbot stop命令。
2、使用带CORS响应头注入的启动命令重新运行:执行clawdbot onboard --cors-allowed-origins="http://localhost:3000,https://your-frontend.com" --cors-allow-credentials=true。
3、验证响应头:在浏览器开发者工具Network标签页中查看任意API响应,确认包含Access-Control-Allow-Origin、Access-Control-Allow-Credentials等字段。
二、修改ClawBot配置文件注入全局CORS中间件
当ClawBot以Node.js服务形式运行(非Docker镜像),可直接编辑其内部Express或Fastify实例,在路由注册前插入自定义CORS中间件。该方式支持细粒度控制,如按路径区分跨域策略。
1、定位ClawBot主配置文件:打开src/config/gateway.config.ts或config/default.json。
2、在middleware数组中追加CORS配置块:
3、将以下JSON片段粘贴至cors字段下:
{"enabled":true,"origins":["http://localhost:8080","https://prod.example.com"],"methods":["GET","POST","OPTIONS"],"headers":["Content-Type","Authorization","X-Requested-With"],"credentials":true}
4、保存文件并重启服务:clawdbot restart。
三、在Nginx反向代理层统一添加CORS响应头
若ClawBot前端由Nginx反向代理暴露至公网(如通过https://ai.yourdomain.com访问),可在Nginx配置中统一注入CORS头。此方案与ClawBot代码完全解耦,适合生产环境灰度发布与A/B测试。
1、编辑Nginx站点配置文件,通常位于/etc/nginx/sites-available/clawbot。
2、在location /或location /api区块内添加以下指令:
add_header 'Access-Control-Allow-Origin' 'https://your-frontend.com' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE' always;
add_header 'Access-Control-Allow-Headers' 'Content-Type,Authorization,X-Requested-With' always;
Qwen-1.0.2.6
PHP中文网提供Qwen-1.0.2.6 MacOS官方客户端下载,专为苹果电脑优化的阿里通义千问桌面应用。本版本深度适配Mac系统,支持本地高效运行与多模态交互,集成超长上下文处理、AI写作、代码生成及智能体构建等核心功能。通过官方渠道下载,确保安全稳定,助您实现智能办公与创作升级。
add_header 'Access-Control-Allow-Credentials' 'true' always;
3、为预检请求单独配置OPTIONS响应:
if ($request_method = 'OPTIONS') { add_header 'Access-Control-Allow-Origin' 'https://your-frontend.com'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE'; add_header 'Access-Control-Allow-Headers' 'Content-Type,Authorization,X-Requested-With'; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'Access-Control-Max-Age' 1728000; add_header 'Content-Type' 'text/plain charset=UTF-8'; add_header 'Content-Length' 0; return 204; }
4、重载Nginx配置:sudo nginx -t && sudo systemctl reload nginx。
四、在Ollama服务侧启用CORS兼容模式
Ollama默认仅监听127.0.0.1:11434且不返回CORS头,导致ClawBot代理转发后浏览器仍拦截响应。通过启动Ollama时指定--host与--cors参数,可使其原生支持跨域,避免ClawBot层额外处理。
1、停止当前Ollama服务:systemctl stop ollama或killall ollama。
2、使用带CORS支持的命令启动Ollama:
OLLAMA_HOST=0.0.0.0:11434 OLLAMA_ORIGINS="http://localhost:3000,https://clawbot.yourdomain.com" ollama serve
3、确认Ollama日志输出中包含CORS enabled for origins: [http://localhost:3000 https://clawbot.yourdomain.com]。
4、更新ClawBot配置中的API地址为http://host.docker.internal:11434(Docker环境)或http://192.168.x.x:11434(宿主机直连)。
五、自动生成ClawBot专用CORS配置代码
ClawBot提供命令行工具clawdbot cors-gen,可根据输入的前端域名自动输出各层CORS配置代码片段,包括Nginx配置、ClawBot JSON配置、Ollama启动命令及Docker Compose环境变量声明,确保多层配置一致性。
1、运行生成命令:clawdbot cors-gen --frontend "https://app.example.com" --credentials true --methods "GET,POST,OPTIONS"。
2、工具将输出四段高亮代码块,分别对应不同部署层级。
3、复制对应环境的代码块,粘贴至目标配置文件中。
4、执行clawdbot validate-config校验语法合法性。