无法与Rasa服务器通信:POST请求触发CORS跨域错误
Rasa服务POST请求CORS错误修复方案
问题根因
- 启动命令中CORS参数配置错误:
--cors *.*属于无效配置,Rasa仅会将*.*识别为单一允许的源域名,不会匹配所有跨域请求;且Linux shell中未加引号的*会被识别为通配符展开为当前目录文件名,最终传递给Rasa的参数完全不符合预期。 - 部分场景下Rasa默认仅监听本地回环地址,需显式配置监听所有网卡才可确保公网访问正常。
- 前端fetch请求未声明JSON格式请求头,且手写JSON请求体存在格式错误,会触发跨域预检请求失败。
修复步骤
1. 调整Rasa启动命令
替换原有启动命令为以下内容:
rasa run --enable-api --cors "*" --host 0.0.0.0
额外注意:需确认AWS服务器安全组已开放5005端口的入站规则,允许你的前端客户端IP访问。
如果需要限制跨域来源提升安全性,可以将"*"替换为你的前端服务实际域名,例如--cors "https://www.your-frontend.com"。
2. 修正前端fetch请求代码
const url = 'http://xxx.xxx.xxx.xxx:5005/model/parse'; fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({text: 'Hello'}) }) .then(res => res.json()) .then(res => console.log(res)) .catch(err => console.error('请求异常:', err))
内容的提问来源于stack exchange,提问作者Bill Ferster
相关产品推荐
相关产品推荐

