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就好了,当然也可加自动登录,这些就自己实现吧