当前位置: 首页>編程日記>正文

React脚手架配置代理解决跨域

React脚手架配置代理解决跨域

文章目录

  • 一、测试代理的服务器的配置和启动,等待React发起请求
    • 1.1、package.json
    • 1.2、server1.js
    • 1.3、server2.js
    • 1.4、node_modules
    • 1.5、启动服务器(server1.js)
    • 1.6、浏览器get请求数据
  • 二、React中的配置代理解决跨域问题的两种方法
    • 2.1、方法1(不推荐)
      • 2.2.1、总结
    • 2.2、方法2

一、测试代理的服务器的配置和启动,等待React发起请求

在这里插入图片描述

1.1、package.json

//package.json
{"name": "server","version": "1.0.0","description": "","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"keywords": [],"author": "","license": "ISC","dependencies": {"express": "^4.17.1"}
}

1.2、server1.js

//server1.js
const express = require('express')
const app = express()app.use((request,response,next)=>{console.log('有人请求服务器1了');console.log('请求来自于',request.get('Host'));console.log('请求的地址',request.url);next()
})app.get('/students',(request,response)=>{const students = [{id:'001',name:'tom',age:18},{id:'002',name:'jerry',age:19},{id:'003',name:'tony',age:120},]response.send(students)
})app.listen(5001,(err)=>{if(!err) console.log('服务器1启动成功了,请求学生信息地址为:http://localhost:5001/students');
})

1.3、server2.js

const express = require('express')
const app = express()app.use((request,response,next)=>{console.log('有人请求服务器2了');next()
})app.get('/cars',(request,response)=>{const cars = [{id:'001',name:'奔驰',price:199},{id:'002',name:'马自达',price:109},{id:'003',name:'捷达',price:120},]response.send(cars)
})app.listen(5002,(err)=>{if(!err) console.log('服务器2启动成功了,请求汽车信息地址为:http://localhost:5002/cars');
})

1.4、node_modules

在终端里面执行 npm install

npm install

1.5、启动服务器(server1.js)

在这里插入图片描述

1.6、浏览器get请求数据

http://localhost:5001/students

在这里插入图片描述

二、React中的配置代理解决跨域问题的两种方法

需求

2.1、方法1(不推荐)

在react脚手架的package.json里面配置proxy

 "proxy":"http://localhost:5001"

在这里插入图片描述

//App.jsx
import React, { Component } from 'react'
import axios from 'axios'export default class App extends Component {getStudentData = ()=>{axios.get('http://localhost:3000/students').then(response => {console.log('成功了',response.data);},error => {console.log('失败了',error);})}render() {return (<div><button onClick={this.getStudentData}>点我获取学生数据</button></div>)}
}

请添加图片描述

2.2.1、总结

优点:配置简单,前端请求资源时可以不加任何前缀(api1)
缺点:不能配置多个代理,满足不了多个代理同时执行
工作方式:上述方式配置代理,当请求了3000不存在的资源时,那么该请求会转发给5001 (优先匹配react前端资源,如果有,那么返回前端有的,没有再去找服务器的)

2.2、方法2

在src目录下新建setupProxy.js文件
npm i http-proxy-middleware

const { createProxyMiddleware } = require('http-proxy-middleware');module.exports = function(app) {app.use('/api',createProxyMiddleware({target: 'https://i.maoyan.com',changeOrigin: true,}));
};
import React from "react";
import IndexRouter from "./Router/indexRouter.js";
import { useEffect } from "react";
import axios from "axios";export default function App() {useEffect(() => {axios.get("/api/mmdb/movie/v3/list/hot.json?ct=%E6%B2%AD%E9%98%B3&ci=531&channelId=4").then((res) => {console.log(res.data);});}, []);return (<div>hi</div>);
}


https://www.fengoutiyan.com/post/15778.html

相关文章:

  • nodejs中间件代理跨域
  • nginx跨域配置详解
  • react脚手架有哪些
  • vue配置跨域代理
  • react脚手架搭建项目
  • react 跨域
  • 创建react脚手架
  • vue前端代理解决跨域
  • 鏡像模式如何設置在哪,圖片鏡像操作
  • 什么軟件可以把圖片鏡像翻轉,C#圖片處理 解決左右鏡像相反(旋轉圖片)
  • 手機照片鏡像翻轉,C#圖像鏡像
  • 視頻鏡像翻轉軟件,python圖片鏡像翻轉_python中鏡像實現方法
  • 什么軟件可以把圖片鏡像翻轉,利用PS實現圖片的鏡像處理
  • 照片鏡像翻轉app,java實現圖片鏡像翻轉
  • 什么軟件可以把圖片鏡像翻轉,python圖片鏡像翻轉_python圖像處理之鏡像實現方法
  • matlab下載,matlab如何鏡像處理圖片,matlab實現圖像鏡像
  • 圖片鏡像翻轉,MATLAB:鏡像圖片
  • 鏡像翻轉圖片的軟件,圖像處理:實現圖片鏡像(基于python)
  • canvas可畫,JavaScript - canvas - 鏡像圖片
  • 圖片鏡像翻轉,UGUI優化:使用鏡像圖片
  • Codeforces,CodeForces 1253C
  • MySQL下載安裝,Mysql ERROR: 1253 解決方法
  • 勝利大逃亡英雄逃亡方案,HDU - 1253 勝利大逃亡 BFS
  • 大一c語言期末考試試題及答案匯總,電大計算機C語言1253,1253《C語言程序設計》電大期末精彩試題及其問題詳解
  • lu求解線性方程組,P1253 [yLOI2018] 扶蘇的問題 (線段樹)
  • c語言程序設計基礎題庫,1253號C語言程序設計試題,2016年1月試卷號1253C語言程序設計A.pdf
  • 信奧賽一本通官網,【信奧賽一本通】1253:抓住那頭牛(詳細代碼)
  • c語言程序設計1253,1253c語言程序設計a(2010年1月)
  • 勝利大逃亡英雄逃亡方案,BFS——1253 勝利大逃亡
  • 直流電壓測量模塊,IM1253B交直流電能計量模塊(艾銳達光電)
  • c語言程序設計第三版課后答案,【渝粵題庫】國家開放大學2021春1253C語言程序設計答案
  • 18轉換為二進制,1253. 將數字轉換為16進制
  • light-emitting diode,LightOJ-1253 Misere Nim
  • masterroyale魔改版,1253 Dungeon Master
  • codeformer官網中文版,codeforces.1253 B
  • c語言程序設計考研真題及答案,2020C語言程序設計1253,1253計算機科學與技術專業C語言程序設計A科目2020年09月國家開 放大學(中央廣播電視大學)
  • c語言程序設計基礎題庫,1253本科2016c語言程序設計試題,1253電大《C語言程序設計A》試題和答案200901
  • 肇事逃逸車輛無法聯系到車主怎么辦,1253尋找肇事司機