前端开发避坑指南:React 代理配置常见问题与解决方案

前端开发避坑指南:React 代理配置常见问题与解决方案

      • 一、为什么需要配置代理?
      • 二、使用 create-react-app 默认配置代理
      • 三、使用 http-proxy-middleware 配置复杂代理
      • 四、高级代理配置
      • 五、生产环境中的代理配置

一、为什么需要配置代理?

    React 应用在开发过程中经常需要与后端 API 进行通信,但由于浏览器的同源策略限制,直接跨域访问会遇到问题。这时就需要配置代理来解决跨域请求的问题。在前后端分离的开发模式中,前端应用和后端 API 通常运行在不同的域名或端口上。例如:

  • 前端 React 应用运行在 http://localhost:3000
  • 后端 API 服务运行在 http://localhost:5000

    当 React 应用尝试访问后端 API 时,浏览器会因为同源策略(协议、域名、端口必须完全一致)而阻止请求,导致跨域错误。代理服务器的作用就是在开发环境中,将前端的请求转发到后端服务器,同时处理跨域问题。

二、使用 create-react-app 默认配置代理

    如果你使用 create-react-app 创建的项目,那么可以通过 package.json 来启用代理,在 package.json 文件中添加 proxy 字段:

{"name": "my-app","version": "0.1.0","proxy": "http://localhost:5000"
}

    这种配置方式适用于所有 API 请求都指向同一个后端服务器的情况。例如,当你在 React 应用中请求 /api/users 时,开发服务器会自动将请求转发到 http://localhost:5000/api/users。这种配置方式相对简单,适用于大多数场景,但是只能配置一个代理目标
无法自定义更复杂的代理规则(如路径重写、headers 修改等),这一点从webpack配置规则里面可以看到:
在这里插入图片描述

三、使用 http-proxy-middleware 配置复杂代理

    当需要更灵活的代理配置时,可以使用 http-proxy-middleware 包,首先安装依赖:

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

    接下来,创建代理配置文件,在 src 目录下创建 setupProxy.js 文件(注意:文件名必须是这个,create-react-app 会自动识别):

const { createProxyMiddleware } = require('http-proxy-middleware');module.exports = function(app) {// 代理 API 请求app.use('/api',createProxyMiddleware({target: 'http://localhost:5000',//目标服务器地址changeOrigin: true,//是否修改请求头中的Origin字段,也就是从原来的localhost:3000修改成了5000pathRewrite: {'^/api': '' // 移除路径中的 /api 前缀},timeout: 5000,  // 配置代理超时时间(毫秒)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/80819.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用影刀RPA打通内容创作“最后一公里”:CSDN草稿一键同步多平台发布

文章目录 引言 一、需求场景:多平台分发的效率困境1. 痛点分析2. 影刀RPA的破局价值 二、影刀RPA是啥?打工人逆袭神器!三、手把手教你造"搬运工"——技术宅的土味开发日记第一步:当个"偷窥狂"——观察手动操作…

进程与线程:09 进程同步与信号量

课程引入:进程同步与信号量 接下来这节课开始,我们再开始讲多进程图像。讲多进程图像的下一个点,前面我们讲清楚了多进程图像要想实现切换,调度是如何做的。同时,多个进程放在内存中,就会存在多进程合作的…

【愚公系列】《Manus极简入门》036-物联网系统架构师:“万物互联师”

🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! &#x1f…

MySQL 8.0 OCP 英文题库解析(四)

Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题26~30 试题26:…

什么是原码和补码

补码的本质确实是模运算(Modular Arithmetic),这是理解补码为何能统一加减法的核心数学原理。下面用最通俗的语言和例子解释清楚: —### 1. 先理解什么是“模运算”- 模运算就是“周期性计数”,比如钟表: -…

笔记项目 day02

一、用户登录接口 请求参数: 用loginDTO来封装请求参数,要加上RequestBody注解 响应参数: 由于data里内容较多,考虑将其封装到一个LoginUser的实体中,用户登陆后,需要生成jwtToken并返回给前端。 登录功…

2025年土木建筑与水利工程国际会议(ICCHE 2025)

2025 International Conference on Civil and Hydraulic Engineering (ICCHE 2025) (一)会议信息 会议简称:ICCHE 2025 大会地点:中国银川 投稿邮箱:icchesub-paper.com 收录检索:提交Ei Compendex,CPCI,C…

运行Spark程序-在shell中运行1

(一)分布式计算要处理的问题 【老师提问:分布式计算要面临什么问题?】 【老师总结】 分布式计算需要做到: 1.分区控制。把大的数据拆成一小份一小份的(分区,分片)让多台设备同时计算…

一文理清人工智能,机器学习,深度学习的概念

目录 一、人工智能的起源与核心范畴(1950-1980) 1.1 智能机器的最初构想 1.2 核心范畴的初步分化 二、机器学习的兴起与技术分化(1980-2010) 2.1 统计学习的黄金时代 2.2 神经网络的复兴与子集定位 2.3 技术生态的形成与AI…

《Effective Python》第1章 Pythonic 思维总结——编写优雅、高效的 Python 代码

《Effective Python》第1章 Pythonic 思维总结——编写优雅、高效的 Python 代码 在编程的世界里,每个语言都有其独特的风格和最佳实践。对于 Python 而言,“Pythonic”已经成为描述遵循 Python 特定风格的代码的代名词。这种风格不仅让代码更易读、更简…

MySQL 事务(二)

文章目录 事务隔离性理论理解隔离性隔离级别 事务隔离级别的设置和查看事务隔离级别读未提交读提交(不可重复读) 事务隔离性理论 理解隔离性 MySQL服务可能会同时被多个客户端进程(线程)访问,访问的方式以事务方式进行一个事务可能由多条SQL…

代码仓提交分支规范

以下是我部门开发时用的分支规范,参考于Linux社区 Tips 分支命名通常遵循一些最佳实践和规则,以便使分支的用途和内容清晰易懂,就在写一个文档的主题一样。 功能分支 (Feature Branches) 用于开发新功能。 命名格式:feature/功能名…

Google Earth Engine(GEE) 代码详解:批量计算_年 NDVI 并导出(附 Landsat 8 数据处理全流程)

一、代码整体目标 基于 Landsat 8 卫星数据,批量计算 2013-2020 年研究区的 NDVI(归一化植被指数),实现去云处理、数据合成、可视化及批量导出为 GeoTIFF 格式,适用于植被动态监测、生态环境评估等场景。 二、代码分步解析(含核心原理与易错点) 1. 加载并显示研究区边…

Maven 处理依赖冲突

Maven处理依赖冲突 什么是依赖冲突?如何解决?Maven自动处理依赖冲突的规则路径优先原则第一声明优先原则注意 子模块覆盖父模块父模块声明dependency子模块覆盖dependency父模块声明dependencyManagement 子模块覆盖dependency父模块声明dependencyManag…

docker 安装 sqlserver2022 和注意点

一、前言 1、可以直接参考微软官方文档 快速入门:使用 Docker 运行 SQL Server Linux 容器映像,这里主要是说一些注意点和坑 二、安装 1、拉取镜像 docker pull mcr.microsoft.com/mssql/server:2022-latest2、创建挂载目录,这里只是比官方…

Dagster Pipes系列-1:调用外部Python脚本

本文是"Dagster Pipes教程"的第一部分,介绍如何通过Dagster资产调用外部Python脚本并集成到数据管道中。首先,创建Dagster资产subprocess_asset,利用PipesSubprocessClient资源执行外部脚本external_code.py,实现跨进程…

【SQL系列】多表关联更新

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

C++进阶学习:STL常用容器--map/multimap容器

1. map 容器基本概念 map 中所有元素都是 pair pair 中第一个元素为 key (键值) 起到索引运用 第二个元素为 value(实值) 所有元素都会根据元素的键值自动排序 本质: map/multimap 属于关联式容器 底层结构是用二…

let,const,var关键字的区别

let,const,var关键字 let,const,var都存在变量提升 它们都存在变量提升但是稍微有点不同 var变量声明会被提升到作用域的顶部,并且会被初始化为 undefinedlet 和 const:变量声明也会被提升到作用域的顶部,但不会被初…

Nuitka 已经不再安全? Nuitka/Cython 打包应用逆向工具 -- pymodhook

pymodhook是一个记录任意对Python模块的调用的库,用于Python逆向分析。 pymodhook库类似于Android的xposed框架,但不仅能记录函数的调用参数和返回值,还能记录模块的类的任意方法调用,以及任意派生对象的访问,基于pyob…