React開啟代理的2種實(shí)用方式
開啟代理的兩種方式
react并沒有封裝好了的ajax請(qǐng)求的代碼供我們直接使用,在進(jìn)行交互的時(shí)候,我們需要自己封裝ajax代碼或者使用第三方ajax庫,一般我們用axios(輕量級(jí))。
先說一下為什么需要代理?
比如說,在本地寫一個(gè)端口為5000的服務(wù)器時(shí),當(dāng)我們通過端口3000去發(fā)生請(qǐng)求,會(huì)出現(xiàn)跨域的問題(原來3000端口的ajax引擎把響應(yīng)攔截了),此時(shí)可以通過代理來解決問題。所謂的代理就是一個(gè)傳遞信息的工具,端口為3000的請(qǐng)求發(fā)給開在3000端口的代理,代理再轉(zhuǎn)發(fā)給5000端口的服務(wù)器,在響應(yīng)的時(shí)候,由于代理是沒有ajax引擎的代理,所以可以接收響應(yīng),再傳遞給開在3000端口的腳手架,從而解決了跨域的問題。
react開啟代理的兩種方式
方法一
在package.json文件中添加"proxy": "https://localhost:5000" 配置之后3000端口沒有的資源就會(huì)去端口5000找。也就是說會(huì)把把發(fā)給端口為3000的請(qǐng)求轉(zhuǎn)發(fā)給開在端口5000的服務(wù)器,但是如果請(qǐng)求的東西再端口3000中已經(jīng)有了的話就不會(huì)再轉(zhuǎn)發(fā)到端口5000里面找了。
這種方法只能找一個(gè),但是如果你不只是要再端口5000中找,還想在其它端口號(hào)找的話(配置多個(gè)代理),就要用下面這個(gè)方法了。
方法二
在src中添加一個(gè)setupProxy的文件(react腳手架會(huì)找到這個(gè)文件),復(fù)制如下代碼
配置之后需要在之前發(fā)送請(qǐng)求的地址localhost:3000后加/api1,表示如果在3000端口沒有找到請(qǐng)求所要的資源,就去api1所配置的代理,于是就去訪問端口5000。如果想要配置多個(gè)代理,用逗號(hào)隔開即可。
changeOrigin用于控制服務(wù)器收到的響應(yīng)頭中Host字段的值。在這里,如果時(shí)默認(rèn)值值,為false的話,服務(wù)器會(huì)以為這個(gè)請(qǐng)求時(shí)來自于端口為3000;但如果把它的值設(shè)置為true,此時(shí)服務(wù)器會(huì)認(rèn)為這個(gè)請(qǐng)求時(shí)來自于端口5000的(其實(shí)不是)。這個(gè)可以不寫但是最好寫上。
pathWrite時(shí)重寫了請(qǐng)求路徑,其實(shí)就是剛開始通過/api找到了這個(gè)代理,但是當(dāng)代理向端口5000發(fā)生請(qǐng)求的時(shí)候要把/api去掉,比如https://localhost:3000/api/student,如果沒有把a(bǔ)pi去掉就相當(dāng)于請(qǐng)求地址為/api/students,但實(shí)際上我們要請(qǐng)求的地址應(yīng)該是/student。
const proxy = require('http-proxy-middleware');
module.exports = function (app) {
app.use(
proxy('/api1', {
target: 'http://localhost:5000',
changeOrigin: true, // 默認(rèn)值是false
pathRewrite: { '^/api1': '' }
}),
proxy('/api2', {
target: 'http://localhost:5001',
changeOrigin: true, // 默認(rèn)值是false
pathRewrite: { '^/api2': '' }
}),
)
}
總結(jié)
到此這篇關(guān)于React開啟代理的2種方式的文章就介紹到這了,更多相關(guān)React開啟代理方式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
react使用節(jié)流函數(shù)防止重復(fù)點(diǎn)擊問題
這篇文章主要介紹了react使用節(jié)流函數(shù)防止重復(fù)點(diǎn)擊問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
React Native實(shí)現(xiàn)簡單的登錄功能(推薦)
這篇文章主要介紹了React Native實(shí)現(xiàn)登錄功能的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09
React Hook - 自定義Hook的基本使用和案例講解
自定義Hook本質(zhì)上只是一種函數(shù)代碼邏輯的抽取,嚴(yán)格意義上來說,它本身并不算React的特性,這篇文章主要介紹了React類組件和函數(shù)組件對(duì)比-Hooks的介紹及初體驗(yàn),需要的朋友可以參考下2022-11-11
使用react-native-image-viewer實(shí)現(xiàn)大圖預(yù)覽
這篇文章主要介紹了使用react-native-image-viewer實(shí)現(xiàn)大圖預(yù)覽,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
react?+?vite?+?ts項(xiàng)目中優(yōu)雅使用.svg文件
這篇文章主要為大家介紹了react?+?vite?+?ts項(xiàng)目中優(yōu)雅使用.svg文件,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
如何解決React useEffect鉤子帶來的無限循環(huán)問題
本文主要介紹了解決React useEffect鉤子帶來的無限循環(huán)問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07

