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代理使用的更多相关文章

  1. 解决跨域、同源策略-React中代理的配置

    React中代理的配置 主要是解决同源策略的问题 何为同源策略? 因为我们React在3000端口,Vue在8080端口,而后台接口往往在5000,这种不同的端口之间就是一种跨域的问题了 axios发 ...

  2. react和vue配置本地代理

    React 在react中配置开发环境下的本地代理相对比较简单,直接在package.json文件中修改即可. 但是这样做有其局限性,如果开发中代理多个接口的时候将无法满足需求,我们需要的是下面这种的 ...

  3. React网络请求跨域代理设置

    之前的之所以可以请求其他域名下的网络数据,是因为我们在服务端设置了相关配置,如下所示 如果将其注释掉,再次测试,如下所示 此时便无法跨域操作,接下来介绍下React如何实现跨域代理 (1)分析 Rea ...

  4. Spring中的cglib动态代理

    Spring中的cglib动态代理 cglib:Code Generation library, 基于ASM(java字节码操作码)的高性能代码生成包 被许多AOP框架使用 区别于JDK动态代理,cg ...

  5. Spring中的JDK动态代理

    Spring中的JDK动态代理 在JDK1.3以后提供了动态代理的技术,允许开发者在运行期创建接口的代理实例.在Sun刚推出动态代理时,还很难想象它有多大的实际用途,现在动态代理是实现AOP的绝好底层 ...

  6. java中InvocationHandler 用于实现代理。

    以下的内容部分参考了网络上的内容,在此对原作者表示感谢! Java中动态代理的实现,关键就是这两个东西:Proxy.InvocationHandler,下面从InvocationHandler接口中的 ...

  7. Tomcat 下配置OpenLayers proxy.cgi代理

    摘要:在OpenLayers访问WFS服务时,会遇到跨域的问题而导致服务无法访问.此时,需要在应用程序中设置代理,通过代理进行访问.本文介绍在tomcat进行proxy.cgi文件配置,以及在调用代理 ...

  8. Immutable 详解及 React 中实践

    本文转自:https://github.com/camsong/blog/issues/3 Shared mutable state is the root of all evil(共享的可变状态是万 ...

  9. React 中阻止事件冒泡的问题

    在正式开始前,先来看看 JS 中事件的触发与事件处理器的执行. JS 中事件的监听与处理 事件捕获与冒泡 DOM 事件会先后经历 捕获 与 冒泡 两个阶段.捕获即事件沿着 DOM 树由上往下传递,到达 ...

  10. React Native & Google & Proxy

    React Native & Google & Proxy https://snack.expo.io/ https://expo.io/snacks/@xgqfrms https:/ ...

随机推荐

  1. 「实践篇」解决微前端 single-spa 项目中 Vue 和 React 路由跳转问题

    前言 本文介绍的是在做微前端 single-spa 项目过程中,遇到的 Vue 子应用和 React 子应用互相跳转路由时遇到的问题. 项目情况:single-spa 项目,基座用的是 React,目 ...

  2. c++对c的拓展_增强

    一:新增bool类型关键字:c中bool类型需要添加stdbool.h头文件,c++则可直接使用 void test(){ bool a=true; //c++可直接定义而c需添加头文件 true和f ...

  3. ASP.NET Core高性能服务器HTTP.SYS

    如果我们只需要将ASP.NET CORE应用部署到Windows环境下,并且希望获得更好的性能,那么我们选择的服务器类型应该是HTTP.SYS.Windows环境下任何针对HTTP的网络监听器/服务器 ...

  4. Struts2-EL表达式为什么能获取值栈数据

    1.EL表达式能获取域对象值 2.向域对象里面放值使用setAttribute方法,获取使用getAttribute方法 3.底层增强request对象里面的方法getAttribute方法 (1)首 ...

  5. 【图文教学】如何轻松下载tiktok上的视频

    我是真诚的想和大家分享这个办法的!这个叫光影存图,图标就是这个绿色的箭头,我是苹果手机,安卓手机也可以用,就是它分免费版和会员版的,没有强制要你充会员,看一下广告就可以获取下载次数,我就是这么干的,只 ...

  6. 基础设施即代码(IAC),Zalando Postgres Operator 简介

    Postgres Operator 在由 Patroni 提供支持的 Kubernetes (K8s) 上提供易于运行的高可用性 PostgreSQL 集群.它仅通过 Postgres 清单 (CRD ...

  7. MySQL入门学习day3随笔3

    JDBC 数据库驱动 我们的程序会通过数据库驱动和数据库打交道 JDBC Sun公司简化开发人员的操作,提供的规范 第一个JDBC项目 创建一个Java项目 导入jar包 编写测试代码 1 creat ...

  8. 新手入门C语言第七章:C判断

    C 判断 判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的). C 语言把任何非零和非空的值假定为 true,把零或 null  ...

  9. PuddingSwap联合 ESBridge举办愚人节“币圈愚话”联合空投活动,完成任务即可获得惊喜奖励

    据官方消息,4月1日0:00- 4月2日23:59,PuddingSwap联合 ESBridge举办"币圈愚话"空投活动,完成任务即可获得惊喜奖励. 此次PuddingSwap联合 ...

  10. HMS Core Discovery第14期直播预告~纵享丝滑剪辑,释放视频创作力

    [导读] 拍摄.导入.特效.卡点.BGM-几步简单的操作,我们便可将生活的瞬间用视频记录与分享.应用前沿AI技术,提供一站式视频处理能力,帮助开发者们构建更智能.更易用.更专业的视频剪辑软件,打造视频 ...