這篇文章將為大家詳細(xì)講解有關(guān)怎么在react中使用axios 跨域訪問(wèn)一個(gè)或多個(gè)域名,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
創(chuàng)新互聯(lián)始終致力于在企業(yè)網(wǎng)站建設(shè)領(lǐng)域發(fā)展。秉承“創(chuàng)新、求實(shí)、誠(chéng)信、拼搏”的企業(yè)精神,致力為企業(yè)提供全面的網(wǎng)絡(luò)宣傳與技術(shù)應(yīng)用整體策劃方案,為企業(yè)提供包括“網(wǎng)站建設(shè)、成都響應(yīng)式網(wǎng)站建設(shè)公司、手機(jī)網(wǎng)站建設(shè)、微信網(wǎng)站建設(shè)、微信小程序、成都商城網(wǎng)站開(kāi)發(fā)、平臺(tái)網(wǎng)站建設(shè)秉承"和諧、參與、激情"的文化,與客戶(hù)和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。1.react + axios 跨域訪問(wèn)一個(gè)域名
配置非常簡(jiǎn)單,只需要在當(dāng)前的 package.json 文件里面配置:
"proxy":"http://iot-demo-web-dev.autel.com", //當(dāng)然,這里是一個(gè)假地址
像這樣:
這樣跨域便完成了,當(dāng)然,也可以像網(wǎng)上那樣,多幾段代碼,像這樣:
我不知道你們寫(xiě)入這段代碼會(huì)怎么樣,反正我是會(huì)報(bào)錯(cuò),具體報(bào)錯(cuò)是怎么我這里沒(méi)辦法展示,因?yàn)槲业捻?xiàng)目已經(jīng) 運(yùn)行了npm run eject
這個(gè)命令
報(bào)錯(cuò)的意思大概就是 proxy 希望得到的是一個(gè)字符串,而現(xiàn)在得到的是一個(gè)對(duì)象,所已我只能采取 第一張圖片的方法進(jìn)行跨域
而后我們安裝axios ,當(dāng)然,其他的也行,在 src 目錄項(xiàng)目建一個(gè) api文件, 再在api文件里面建一個(gè) user.js 寫(xiě)上下面這段代碼
import axios from 'axios' export function _user(data) { return axios.get('device/detail', data) }
我這里的跨域使用的是第一張圖片上的那種跨域
在你需要發(fā)送請(qǐng)求的地方寫(xiě)上以下代碼:
import { _user } from '../api/user' componentDidMount() { let res = _user({}) console.log(res) }
接下來(lái)咱們就能愉快的獲得后臺(tái)給我們的數(shù)據(jù)了
上面的那種跨域呢,可以說(shuō)是非常方便,但是吧,如果后臺(tái)給我們兩個(gè)甚至三個(gè)不同的域名呢 怎么辦,那我們就得使用插件
2.react +axios 跨域訪問(wèn)多個(gè)域名
安裝插件:npm install --save http-proxy-middleware
安裝好了之后咱們是開(kāi)始配置啦:
1.首先暫時(shí)運(yùn)行命令將配置暴露出來(lái)
npm run eject or yarn eject
在這里你可能會(huì)遇到一個(gè)報(bào)錯(cuò):
那這個(gè)時(shí)候你可以將報(bào)錯(cuò)百度一下,或者跟著我繼續(xù)操作
報(bào)錯(cuò)的原因呢是因?yàn)樵蹅冊(cè)谑褂媚_手架搭建 react 時(shí),系統(tǒng)會(huì)自動(dòng)給我們添加一個(gè) .gitignore 文件,如果你沒(méi)有提交到倉(cāng)庫(kù)過(guò),你就需要先提交到倉(cāng)庫(kù)
完成這兩步之后就可以繼續(xù) 命名 npm run eject
,等配置文件暴露完成之后,你的 package.json
可能非常多配置,咱們不用管,在 src 下面建一個(gè) setupProxy.js 在里面寫(xiě)上下面代碼:
const { createProxyMiddleware } = require('http-proxy-middleware') module.exports = function (app) { app.use( createProxyMiddleware('/api', { target: 'http://iot-demo-web-server-dev.autel.com', changeOrigin: true, }) ) app.use( '/sys', createProxyMiddleware({ target: 'http://localhost:5001', changeOrigin: true, }) ); }
找到 scripts 路徑 打開(kāi) strat.js
在第 117行左右 協(xié)商下面代碼:
require('../src/setupProxy')(devServer) //注意路徑是否正,是你剛才建的那個(gè)文件
如此 多個(gè)跨域便成功了,值得注意的就是, 需要在你請(qǐng)求的具體路徑前面加上 api 或 sys 像這樣
關(guān)于怎么在react中使用axios 跨域訪問(wèn)一個(gè)或多個(gè)域名就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。