前端開發避坑指南: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.pswp.cn/bicheng/80819.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/80819.shtml
英文地址,請注明出處:http://en.pswp.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…