You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React代理Django后端请求遭拒:ECONNREFUSED错误求助

排查React代理到Django的ECONNREFUSED问题

既然你已经确认直接访问Django端点、用Axios直连都能正常返回结果,那问题肯定出在代理环节的配置或本地环境交互细节上,试试下面这些针对性的排查步骤:

1. 确认Django服务的绑定地址

默认python manage.py runserver会把服务绑定到127.0.0.1:8000,但部分系统对localhost的解析可能偏向IPv6(比如指向::1),导致代理请求找不到服务。

  • 改成绑定到所有网络地址启动Django:
    python manage.py runserver 0.0.0.0:8000
    
  • 同时把React的代理目标改成http://127.0.0.1:8000(不管是package.json还是setupProxy.js配置),再测试请求。

2. 检查React代理配置的正确性

场景1:用package.json的proxy字段

确保package.json里的proxy配置没有拼写错误,格式如下:

{
  "name": "your-react-app",
  "proxy": "http://localhost:8000",
  // 其他项目配置...
}

注意:

  • 不要在地址末尾加斜杠(比如别写成http://localhost:8000/)
  • 端口号必须和Django启动端口完全一致
  • 修改后必须重启React开发服务器,配置才会生效!

场景2:用setupProxy.js(多代理/复杂配置场景)

如果你的React项目是create-react-app 2.x及以上版本,且需要自定义代理规则,在src目录下创建setupProxy.js:

const { createProxyMiddleware } = require('http-proxy-middleware');

module.exports = function(app) {
  app.use(
    '/api',
    createProxyMiddleware({
      target: 'http://localhost:8000',
      changeOrigin: true, // 关键参数:修改请求头Host字段匹配目标服务器
    })
  );
};

先安装依赖:

npm install http-proxy-middleware --save-dev

3. 确保React请求用相对路径

在React组件里发请求时,必须用相对路径触发代理:

// 正确:相对路径,会走React代理
axios.post('/api/auth/token/obtain/', { username: 'xxx', password: 'xxx' })

// 错误:绝对路径,直接访问8000(你说这个是正常的,但还是确认下代码里有没有写错)
axios.post('http://localhost:8000/api/auth/token/obtain/', { ... })

4. 排查本地端口占用与防火墙

  • 确认8000端口确实被Django占用:
    • Mac/Linux:lsof -i :8000,查看输出里是否有Django相关进程
    • Windows:netstat -ano | findstr :8000,找到PID后去任务管理器杀掉占用进程,再重启Django
  • 暂时关闭本地防火墙/杀毒软件,部分安全工具会拦截本地端口间的请求。

5. 验证Django的ALLOWED_HOSTS配置

虽然你直接访问没问题,但还是确认下settings.py里的配置:

ALLOWED_HOSTS = ['localhost', '127.0.0.1', '0.0.0.0']

修改后重启Django服务。


内容的提问来源于stack exchange,提问作者cclloyd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:53:51