express服务器代理解决跨域
https://blog.csdn.net/nep_chan/article/details/116146799
搭建express全局安装
npm install -g express-generator@4
express命令创建应用架构
express katsuki
cd katsuki
安装express-http-proxy
https://www.npmjs.com/package/express-http-proxy
npm i express-http-proxy --save
app.js中添加
var proxy = require("express-http-proxy");
const proxyConfig = {
URL: "10.10.10.10",
PORT: "2333",
};
// 访问 http://localhost:3000/katsuki/api
// 转换 http://10.10.10.10:2333/api
app.use(
"/katsuki",
proxy("http://" + proxyConfig.URL + ":" + proxyConfig.PORT)
);
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var app = express();
app.all("*", function (req, res, next) {
// 设置允许跨域的域名,*代表允许任意域名跨域
res.header('Access-Control-Allow-Origin', '*');
// 允许的header类型
res.header('Access-Control-Allow-Headers', '*');
// 跨域允许的请求方式
res.header('Access-Control-Allow-Methods', 'DELETE,PUT,POST,GET,OPTIONS');
if (req.method.toLowerCase() == 'options') {
res.send(200); // 让options 尝试请求快速结束
}
else {
next();
}
})
let proxy = require("express-http-proxy");
// const userResDecorator = function (rsp, data, req, res, callback) {
// data = JSON.parse(data.toString('utf8'));
// console.log('请求url:', req.url)
// console.log('请求数据', data);
// res.status(200);
// return data
// }
const proxyReqPathResolver = function (req, res) {
console.log(require('url').parse(req.url).path)
return require('url').parse(req.url).path;
}
// 前缀
app.use(
"/api",
proxy(() => 'http://owms-hms-dev.com:80', {
proxyReqPathResolver: (req) => {
const url = '/api' + req.url;
console.log(url)
return url;
}
})
);
// app.use(
// "/owms/api/v2",
// proxy("http://owms-hms-dev.com/api/", { intercept, forwardPath })
// );
app.use(
"/workorder",
proxy(() => 'http://test1-owms-uswe.eminxing.com', {
proxyReqPathResolver: (req) => {
const url = '/workorder' + req.url;
console.log(url)
return url;
}
})
);
app.use(
"/aftermarket",
proxy(() => 'http://test1-owms-uswe.eminxing.com', {
proxyReqPathResolver: (req) => {
const url = '/owms/api/v1/aftermarket' + req.url;
console.log(url)
return url;
}
})
);
app.use(
"/moment_storage",
proxy(() => 'http://test1-owms-uswe.eminxing.com', {
proxyReqPathResolver: (req) => {
const url = '/moment_storage' + req.url;
console.log(url)
return url;
}
})
);
// app.use(
// "/aftermarket",
// proxy("http://test1-owms-uswe.eminxing.com/owms/api/v1/aftermarket/", { intercept, forwardPath })
// );
module.exports = app;