1、http-proxy-middleware应用办法
在src目录下创立setupProxy.js文件
const proxy = require("http-proxy-middleware");
// app能够了解为一个express实例
module.exports = function (app) {
app.use(
proxy(['/mock/1241', '/mock/1105'], {
target: "http://10.118.71.83:3000/", // 指标服务器
changeOrigin: true // 默认false,是否须要扭转原始主机头为指标URL,是否进行代理
}),
);
}
http-proxy-middleware
会作为target
的反向代理服务器,承受http://localhost:3000/mock/1241/xxx
申请。
一些罕用参数阐明:
// proxy 中间件的选择项
var config= {
target: 'http://www.example.org', // 指标服务器 host
changeOrigin: true, // 默认false,是否须要扭转原始主机头为指标URL
ws: true, // 是否代理websockets
pathRewrite: {
'^/api/old-path': '/api/new-path', // 重写申请,比方咱们源拜访的是api/old-path,那么申请会被解析为/api/new-path
'^/api/remove/path': '/path' // 同上
},
router: {
// 如果申请主机 == 'dev.localhost:3000',
// 重写指标服务器 'http://www.example.org' 为 'http://localhost:8000'
'dev.localhost:3000' : 'http://localhost:8000'
}
};
target:用于设置指标服务器host。
changeOrigin:默认false,是否须要扭转原始主机头为指标URL。
ws:设置是否代理websockets。
pathRewrite:重写指标url门路。
router:重写指定申请转发指标
具体能够参考:https://www.cnblogs.com/zhaow…
2、react我的项目中是怎么执行setupProxy.js的?
在讲述原理之前,咱们先抛出一个问题:为什么间接在src目录下创立setupProxy.js文件就能够进行跨域申请了?上面带着这个问题来摸索一番。
既然在react-scripts start
启动我的项目之后就能够跨域申请,那么必定是在编译完后生成本地服务过程中配置了setupProxy.js配置的中间件。就相当于express我的项目中学生成express实例,而后再应用实例的use办法配置中间件:
const app = express();
const bodyParser = require('body-parser');
// 应用body-parser解析申请body参数
app.use(bodyParser.json())
http-proxy-middleware
中间件的应用
const express = require('express');
const proxy = require('http-proxy-middleware');
var app = express();
app.use('/api', proxy({target: 'http://10.119.168.87:4000', changeOrigin: true}));
当运行react-scripts start
时会执行scripts目录下的start.js脚本start.js
如引入config
目录下的paths.js
以及根底构建脚本webpack.config.js
和devServer
服务配置文件webpackDevServer.config.js
paths.js
寄存的是一些文件门路映射,比方咱们的代理文件setupProxy.js
webpack.config.js
就是根底的构建配置,比方款式加载解析、代码压缩等等。webpackDevServer.config.js
配置的就是咱们的本地服务,包含咱们的跨域申请
引入上述文件后,start.js
中会生成一个本地服务去执行构建、服务配置脚本
参考:https://www.cnblogs.com/zhaow…
发表回复