求助:Django+React部署Heroku后仅本地运行后端时请求正常
排查方向建议
检查前端请求地址配置
确认React前端发送请求的baseURL指向的是Heroku上的Django后端域名,而非本地的localhost:8000这类地址。很多时候本地开发用的是本地后端地址,部署后未及时修改,会导致请求无法到达正确的后端服务。跨域(CORS)配置排查
本地运行时可能依赖浏览器的开发豁免或临时CORS配置,但Heroku部署后需确保Django正确配置跨域:- 确认已安装
django-cors-headers并添加到INSTALLED_APPS - 将
corsheaders.middleware.CorsMiddleware放到MIDDLEWARE的最前面 - 在
settings.py中配置允许的源:
CORS_ALLOWED_ORIGINS = [ "https://barkbnb-demo.herokuapp.com", ]- 确认已安装
查看Heroku后端日志
通过heroku logs --tail命令或Heroku控制台查看应用日志,重点关注请求触发时的报错信息,比如数据库连接失败、路由匹配错误、依赖缺失等,日志是定位问题的核心依据。验证Heroku部署配置
- 检查
Procfile是否正确配置,内容应为:web: gunicorn your_project_name.wsgi --log-file - - 确认
requirements.txt中包含gunicorn依赖 - 检查环境变量:确保
DEBUG=False(生产环境必须关闭),DATABASE_URL(使用Heroku Postgres时)配置正确
- 检查
HTTPS协议与安全配置
Heroku默认使用HTTPS,需确保:- 前端请求使用
https://协议,避免混合内容被浏览器拦截 - Django配置中开启:
SECURE_SSL_REDIRECT = True SESSION_COOKIE_SECURE = True CSRF_COOKIE_SECURE = True
- 前端请求使用
CSRF令牌校验问题
若POST/PUT等修改请求报错,需检查:- 前端请求头是否携带
X-CSRFToken(从Cookie中获取) - Django的
settings.py中是否将Heroku域名加入CSRF_TRUSTED_ORIGINS:CSRF_TRUSTED_ORIGINS = ['https://barkbnb-demo.herokuapp.com']
- 前端请求头是否携带
内容的提问来源于stack exchange,提问作者youssefrag
相关产品推荐
相关产品推荐

