首頁 >web前端 >js教程 >討論react axios 跨域存取一個或多個網域問題

討論react axios 跨域存取一個或多個網域問題

coldplay.xixi
coldplay.xixi轉載
2020-08-18 17:11:362157瀏覽

討論react axios 跨域存取一個或多個網域問題

【相關文章推薦:ajax影片教學

#1.react axios 跨網域存取一個網域名稱

設定非常簡單,只需要在目前的package.json 檔案裡面設定:

"proxy":"http://iot-demo-web- dev.autel.com", //當然,這裡是一個假地址

像這樣:

這樣跨域便完成了,當然,也可以像網路上那樣,多幾段程式碼,像這樣:

#我不知道你們寫入這段程式碼會怎麼樣,反正我是會報錯,具體報錯是怎麼我這裡沒辦法展示,因為我的專案已經運行了npm run eject 這個指令

報錯的意思大概就是proxy 希望得到的是一個字串,而現在得到的是一個對象,所已我只能採取第一張圖片的方法進行跨域

而後我們安裝axios ,當然,其他的也行,在src 目錄項目建一個api文件, 再在api檔裡面建一個user.js 寫上下面這段程式碼

import axios from 'axios'

export function _user(data) {
 return axios.get('device/detail', data)
}

我這裡的跨域使用的是第一張圖片上的那種跨域

在你需要發送請求的地方寫上以下程式碼:

import { _user } from '../api/user'

 componentDidMount() {
 let res = _user({})
 console.log(res)
 }

接下來咱們就能愉快的獲得後台給我們的資料了

上面的那種跨域呢,可以說是非常方便,但是吧,如果後台給我們兩個甚至三個不同的網域呢   怎麼辦,那我們就得使用外掛程式

2.react axios 跨網域存取多個網域名稱

#安裝外掛:npm install --save http-proxy-middleware

安裝好了之後咱們是開始設定啦:

#1.首先暫時執行指令將配置暴露出來

npm run eject
or
yarn eject

在這裡你可能會遇到一個報錯:

那這個時候你可以將報錯百度一下,或者跟著我繼續操作

報錯的原因呢是因為咱們在使用腳手架搭建react 時,系統會自動給我們添加一個.gitignore 文件,如果你沒有提交到倉庫過,你就需要先提交到倉庫

完成這兩步驟之後就可以繼續命名 npm run eject ,等設定檔曝光完成之後,你的 package.json 可能非常多配置,咱們不用管,在src 下面建一個 setupProxy.js 在裡面寫上下面程式碼:

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 路徑開啟strat.js

#在第117行左右協商下面程式碼:

require('../src/setupProxy')(devServer) //注意路径是否正,是你刚才建的那个文件

#如此多個跨域便成功了,值得注意的就是, 需要在你請求的具體路徑前面加上api 或sys 像這樣

相關學習推薦:js影片教學

##

以上是討論react axios 跨域存取一個或多個網域問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:jb51.net。如有侵權,請聯絡admin@php.cn刪除