如何解决如何充当代理服务器并修改传入的请求,然后在NodeJS中对其进行预取?
我正在构建一个代理服务,它将把除一种POST请求外的所有请求都转发给另一台服务器。
我打算使用express-http-proxy
来执行此操作,但找不到快速修改POST请求的方法。
例如:
我想捕获所有对/getdata
的POST请求,并检查它们是否有一个名为username
的字段,
如果他们愿意,我想用自定义用户名替换它,然后将请求转发到另一台服务器,然后将响应从它转发回用户。
感谢您的帮助。任何软件包或资源都将有所帮助。谢谢。
解决方法
我最近遇到了类似的问题,最终使用了http-proxy-middleware和以下配置(基于this配方):
const express = require('express');
const {createProxyMiddleware} = require('http-proxy-middleware');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json());
const options = {
target: '<your-target>',changeOrigin: true,onProxyReq: (proxyReq,req,res) => {
if (req.path === '/getdata' && req.body && req.body.userName) {
req.body.userName = "someOtherUser";
const bodyData = JSON.stringify(req.body);
proxyReq.setHeader('Content-Type','application/json');
proxyReq.setHeader('Content-Length',Buffer.byteLength(bodyData));
proxyReq.write(bodyData);
}
},};
app.use(createProxyMiddleware(options));
app.listen(4001,() => console.log("listening ..."));
对我来说,诀窍是使用此行重新计算Content-Length
:
proxyReq.setHeader('Content-Length',Buffer.byteLength(bodyData));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。