ReactJS接入Odoo遇CORS跨域拦截问题,如何解决?
解决Odoo与React前端的CORS跨域问题
方案1:修改Odoo服务器配置添加CORS头
浏览器会拦截跨域请求,但Postman不受浏览器CORS策略限制,所以能正常请求。你可以直接修改Odoo的配置文件(通常为odoo.conf),添加CORS允许规则:
# 允许所有域名跨域(开发环境可用) http_cors = * # 生产环境建议限制特定域名 http_cors = https://你的前端域名.com
修改后重启Odoo服务器,服务器会在响应中携带Access-Control-Allow-Origin头,浏览器就不会拦截请求了。
方案2:使用反向代理(生产环境推荐)
如果不想直接修改Odoo配置,可通过Nginx等反向代理工具统一处理请求,避免跨域。示例Nginx配置:
server { listen 80; server_name 你的域名.com; # 处理前端静态文件 location / { root /你的React项目打包路径; try_files $uri $uri/ /index.html; } # 转发Odoo API请求 location /odoo-api { proxy_pass http://localhost:8069; proxy_set_header Host $host; rewrite ^/odoo-api/(.*)$ /$1 break; } }
随后将React代码中Odoo的host改为/odoo-api,前端请求会通过Nginx转发,自然消除跨域问题。
方案3:开发环境临时用React内置代理
本地开发时,直接在React项目的package.json中添加代理配置:
"proxy": "http://localhost:8069"
然后修改登录函数的Odoo配置:
const odoo = new Odoo({ host: '', // 留空或写 '/' port: '', // 无需填写端口,代理会自动转发 database: db, username: userName, password: password, });
重启React开发服务器后,所有API请求会自动转发到Odoo,绕开CORS限制。
内容的提问来源于stack exchange,提问作者mohamed ali mrad
相关产品推荐
相关产品推荐

