1. 为什么需要配置代理
在React项目开发过程中,前后端分离的架构模式已经成为主流。前端开发服务器通常运行在3000端口,而后端API服务可能运行在另一个端口(比如8080)。这种跨域的情况会导致浏览器出于安全考虑阻止前端请求后端接口。
我遇到过不少新手开发者在这个环节卡壳——明明后端接口已经调通,前端代码也没问题,但就是拿不到数据。控制台里醒目的CORS错误提示让人头疼。这时候就需要理解代理配置的重要性了。
代理的核心作用就是让开发服务器充当中间人。当前端请求/api/users时,开发服务器会把这个请求转发到真正的后端地址(比如http://localhost:8080/api/users),然后将响应返回给前端。由于这个转发是服务端行为,完美避开了浏览器的同源策略限制。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 三种主流代理配置方案
2.1 package.json简单配置
最快捷的方式是在package.json中添加proxy字段:
json复制{
"proxy": "http://localhost:8080"
}
这种配置适合简单场景:
- 后端只有一个服务地址
- 不需要处理路径重写
- 开发环境使用
我在早期项目中经常用这种方式,直到遇到需要对接多个后端服务的项目才意识到它的局限性。比如同时需要连接用户中心和支付服务两个独立后端时,这种简单配置就无法满足需求了。
2.2 http-proxy-middleware进阶配置
更专业的做法是创建src/setupProxy.js文件(Create React App项目会自动加载该文件):
javascript复制const { createProxyMiddleware } = require('http-proxy-middleware');
module.exports = function(app) {
app.use(
'/api',
createProxyMiddleware({
target: 'http://localhost:8080',
changeOrigin: true,
pathRewrite: {
'^/api': ''
}
})
);
};
这种配置的强大之处在于:
- 可以配置多个代理规则
- 支持路径重写(pathRewrite)
- 能设置changeOrigin处理跨域
- 可以添加拦截器、日志等中间件
我特别推荐使用pathRewrite来处理前后端路径不一致的情况。比如前端用/api/users,但后端实际是/users接口,通过重写规则可以完美衔接。
2.3 环境变量动态配置
大型项目往往需要区分开发、测试、生产环境:
javascript复制const { createProxyMiddleware } = require('http-proxy-middleware');
const target =
