React中http-proxy-middleware代理使用
React项目npm run start启动本地服务后浏览器访问http://localhost:3000
start命令也可自定义port指定本地运行端口(eg: PORT=3002)
对于单点登录关联的站点,通过DNS服务器指向,绑定域名和IP,此时项目访问不能使用localhost或计算机IP地址,需要使用域名访问,通过一些软件配置host(eg: 127.0.0.1 app.web.com)此时本地环境就可以访问http://app.web.com:3002。
对于网关映射的服务地址,也需要配置对应的host完成本地环境的接口请求、数据交互。
现在流行微服务,在一个项目中会出现访问请求多个服务器,http-proxy-middleware这个插件就能帮助我们实现业务需求。
http-proxy-middleware插件用于设置代理,转发请求给其他服务器,解决前端的跨域请求
插件安装:npm install --save-dev http-proxy-middleware
使用:
src目录下新建setupProxy.js:
const { createProxyMiddleware } = require('http-proxy-middleware');
module.exports = function (app) {
// 将/userapi相关接口代理转发target对应的服务器上
// 相当于请求了http://appuser.web.com/userapi
app.use('/userapi', createProxyMiddleware({
target: 'http://appuser.web.com',
changeOrigin: true,// 默认为false,是否改变原始主机头为目标url
ws: true,// 是否代理websockets
pathRewrite: {// 重写path地址
'^/api/aaa': '/api/bbb'// 将请求的/api/aaa重写解析到/api/bbb
},
router: {// 用于重写目标服务器
// 当请求的host为172.14.14.102时重写目标服务器为后面的地址
'172.14.14.102': 'http://appuser.webapi.com'
}
}))
// 可以配置任意数量的转发,代理不同的接口和服务器
app.use('/adminapi', createProxyMiddleware({
target: 'http://appadmin.web.com',
changeOrigin: true,// 默认为false,是否改变原始主机头为目标url
ws: true,// 是否代理websockets
pathRewrite: {// 重写path地址
'^/api/ccc': '/api/ddd'// 将请求的/api/ccc重写解析到/api/ddd
},
router: {// 用于重写目标服务器
// 当请求的host为172.14.14.102时重写目标服务器为后面的地址
'172.14.14.102': 'http://appadmin.webapi.com'
}
}))
}
createProxyMiddleware这里是省略了第一个参数,表示匹配的路径,省略时表示匹配任何路径
createProxyMiddleware('/', {})、createProxyMiddleware({})、
createProxyMiddleware('**', {})都表示匹配任何路径,转发所有请求
也支持数组,函数等多种形式,数组表示匹配多个路径
createProxyMiddleware(['/api', '/data'], {})
还可以使用通配符来进行匹配
createProxyMiddleware('**/*.html', {})任何以.html结尾的请求
createProxyMiddleware('/userapi/*.html', {})userapi下所有以.html结尾的请求
createProxyMiddleware('!**/*.json', {})非!符号表示排除任何以.json结尾的请求
http-proxy-middleware原理是对nodejs的http-proxy库作了一层封装,支持http-proxy的option中的选项配置
React中http-proxy-middleware代理使用的更多相关文章
- 解决跨域、同源策略-React中代理的配置
React中代理的配置 主要是解决同源策略的问题 何为同源策略? 因为我们React在3000端口,Vue在8080端口,而后台接口往往在5000,这种不同的端口之间就是一种跨域的问题了 axios发 ...
- react和vue配置本地代理
React 在react中配置开发环境下的本地代理相对比较简单,直接在package.json文件中修改即可. 但是这样做有其局限性,如果开发中代理多个接口的时候将无法满足需求,我们需要的是下面这种的 ...
- React网络请求跨域代理设置
之前的之所以可以请求其他域名下的网络数据,是因为我们在服务端设置了相关配置,如下所示 如果将其注释掉,再次测试,如下所示 此时便无法跨域操作,接下来介绍下React如何实现跨域代理 (1)分析 Rea ...
- Spring中的cglib动态代理
Spring中的cglib动态代理 cglib:Code Generation library, 基于ASM(java字节码操作码)的高性能代码生成包 被许多AOP框架使用 区别于JDK动态代理,cg ...
- Spring中的JDK动态代理
Spring中的JDK动态代理 在JDK1.3以后提供了动态代理的技术,允许开发者在运行期创建接口的代理实例.在Sun刚推出动态代理时,还很难想象它有多大的实际用途,现在动态代理是实现AOP的绝好底层 ...
- java中InvocationHandler 用于实现代理。
以下的内容部分参考了网络上的内容,在此对原作者表示感谢! Java中动态代理的实现,关键就是这两个东西:Proxy.InvocationHandler,下面从InvocationHandler接口中的 ...
- Tomcat 下配置OpenLayers proxy.cgi代理
摘要:在OpenLayers访问WFS服务时,会遇到跨域的问题而导致服务无法访问.此时,需要在应用程序中设置代理,通过代理进行访问.本文介绍在tomcat进行proxy.cgi文件配置,以及在调用代理 ...
- Immutable 详解及 React 中实践
本文转自:https://github.com/camsong/blog/issues/3 Shared mutable state is the root of all evil(共享的可变状态是万 ...
- React 中阻止事件冒泡的问题
在正式开始前,先来看看 JS 中事件的触发与事件处理器的执行. JS 中事件的监听与处理 事件捕获与冒泡 DOM 事件会先后经历 捕获 与 冒泡 两个阶段.捕获即事件沿着 DOM 树由上往下传递,到达 ...
- React Native & Google & Proxy
React Native & Google & Proxy https://snack.expo.io/ https://expo.io/snacks/@xgqfrms https:/ ...
随机推荐
- java基础-多线程线程池
线程池 * 程序启动一个新线程成本是比较高的,因为它涉及到要与操作系统进行交互.而使用线程池可以很好的提高性能,尤其是当程序中要创建大量生存期很短的线程时,更应该考虑使用线程池.线程池里的每一个线程代 ...
- Spring5-IOC容器实现方式
spring提供了两个接口实现IOC容器 (1)BeanFactory:IOC容器基本实现,是Spring内部使用的接口,不提倡开发人员使用 特点:加载配置文件时侯不会创建对象,在获取对象时才会创建对 ...
- 小程序已成为超级APP必选项,逐鹿私域“留量”
截止2021年底,中国移动互联网月活跃用规模达到11.74亿人,增速逐渐呈放缓趋势,用户渗透率接近天花板.客户的增长速度越趋于平缓,品牌在不同成长阶段也要适应增长节奏的变化,越来越多主流商家不得不利用 ...
- echarts饼图禁止鼠标悬浮高亮
将高亮时的颜色和原本颜色手动设置成相同的值,把series.data里的itemStyle属性进行设置 代码如下: option = { color:['#3498db','#EEEEEE'], se ...
- NodeJS学习day1
今天主要学习的IO操作 const fs = require('fs') fs.readFile('./files/11.txt','utf-8',function(err,daraStr){ //读 ...
- 新手小白入门C语言第三章:关于数据类型
C 语言包含的数据类型 1.整型 整型分为整形常量和整形变量,常量就是我们平时所看到的准确的数字,例如:1.20.333等等,变量则按我的理解是我像内存去申请一个存储空间,告诉内存空间我申请了这个地方 ...
- B3log开源博客compose搭建
B3log开源博客搭建 docker 安装 yum install docker-ce-17.12.1.ce docker-compose 安装 curl -L https://github.com/ ...
- Linux中信号量的实现
如果一个任务获取信号量失败,该任务就必须等待,直到其他任务释放信号量.本文的重点是,在Linux中,当有任务释放信号量之后,如何唤醒正在等待该信号量的任务. 信号量定义如下: struct semap ...
- springmvc05-json交互处理
什么是json: JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式,目前使用特别广泛. *采用完全独立于编程语言的文本格式来存储和表示数据 ...
- R 数据可视化: PCA 主成分分析图
简介 主成分分析(Principal Component Analysis,PCA)是一种无监督的数据降维方法,通过主成分分析可以尽可能保留下具备区分性的低维数据特征.主成分分析图能帮助我们直观地感受 ...