Django+React部署CPanel时CORS跨域问题排查求助
问题排查与解决方案
1. 修正Django的ALLOWED_HOSTS配置
你的后端服务部署在api.example.com,但当前ALLOWED_HOSTS未包含该域名,Django会直接拒绝来自未授权主机的请求,导致CORS响应头无法正常返回。修改配置如下:
ALLOWED_HOSTS = [ 'www.example.com', 'example.com', 'api.example.com', 'xxx.yyy.208.227', ]
2. 启用CORS_ALLOW_CREDENTIALS
你的前端axios实例设置了withCredentials: true,必须开启Django的跨域凭证支持,否则带凭证的跨域请求会被拦截:
CORS_ALLOW_CREDENTIALS = True
3. 确认CORS_ALLOWED_ORIGINS覆盖所有前端域名
当前配置已包含https://www.example.com和https://example.com,符合前端域名需求,但如果有其他测试环境域名发起请求,也需要补充到列表中。
4. 重启Django服务
修改settings.py后,必须在CPanel中重启后端应用(比如通过Passenger应用管理重启),否则新配置不会生效。
5. 检查CPanel服务器层面配置
- 确认
api.example.com子域名已正确指向后端应用的部署目录 - 排查Apache/Nginx是否存在额外的CORS拦截规则,避免服务器端自定义的
Access-Control-Allow-Origin头与Django配置冲突 - 清除浏览器缓存,避免之前的错误响应被缓存影响测试
6. 验证axios实例的BASE_URL
确认BASE_URL变量的值为https://api.example.com,确保请求目标地址正确,避免因地址错误导致的跨域问题
内容的提问来源于stack exchange,提问作者user22257988
相关产品推荐
相关产品推荐

