«

node 实现本地代码调试远程接口(反向代理并加header(cookie)等)

emer 发布于 2020-11-19 11:48   1701 次阅读     


有个需求,现有oa 要加个页面,本地新建的html文件要联调并获取远程数据,要涉及跨域,跨域解决方案多种就不赘述了,用node简单实现这个功能

目录根目录新建server.js,如下:

const express = require('express');
const timeout = require('connect-timeout');
const {createProxyMiddleware } = require('http-proxy-middleware');
const app = express();

// HOST 指目标地址   代理指向地址    代理到oa.lininn.cn也可后面加端口
let PROXY_HOST = 'http://oa.lininn.cn'
//本地启动端口
let Local_PORT=9000;
// 超时时间
const TIME_OUT = 30 * 1e3;

// 设置端口
app.set('port', Local_PORT);

// 设置超时 返回超时响应
app.use(timeout(TIME_OUT));
app.use((req, res, next) => {
  if (!req.timedout) next();
});

// 静态页面
// 这里一般设置你的静态资源路径
app.use('/', express.static('./'));

/*
    反向代理配置
    简单赘述:就是本地访问 /workflow 这个接口,把所有请求反向代理到服务器,但由于本地html未登陆,所以代理处加了个登陆的cookie,很简单
*/
let options={
  target:PROXY_HOST,
  changeOrigin: true, // needed for virtual hosted sites
  ws: true,
  onProxyReq(proxyReq, req, res) {
    //本地由于没有cookie,所以这里设置了cookie,发送给后台,这里可以设置发送给后台的headers,自己研究,更多设置请查询https://www.npmjs.com/package/http-proxy-middleware
    proxyReq.setHeader('Cookie', '123');
   }
}
 app.use('/workflow*',createProxyMiddleware(options))

// 监听端口
app.listen(Local_PORT, () => {
  console.log(`server running @${Local_PORT}`);
});

如上即可,安装依赖,node server就好了,当然也可加自动登录,这些就自己实现吧