【问题标题】:How to add user data in http-proxy-middleware如何在 http-proxy-middleware 中添加用户数据
【发布时间】:2022-11-04 06:05:54
【问题描述】:
我非常想要实现的是将用户数据或任何数据添加到我对我的一项服务的请求中,但就像我在下面的代码中所做的那样,它不会在发送到我的服务时添加到我的 proxyRequest 中。任何人都知道为什么以及如何实现这一目标?
app.use('/platform',
jwtMiddleware,
(req, res, next) => {console.log(req.user, req.method), next()},
createProxyMiddleware({
target: `http://localhost:8000`,
auth: false,
changeOrigin: true,
pathRewrite: {
[`^/platform`]: '',
},
onProxyReq: function onProxyReq(proxyReq, req, res) {
proxyReq.user = req.user
}
})
);
【问题讨论】:
标签:
node.js
express
proxy
reverse-proxy
http-proxy-middleware
【解决方案1】:
创建一个 FormData 对象并向其添加值。您还需要将边界字符串附加到编码类型标头,并添加内容长度标头。 map 函数将设置非文件参数,并且不是严格需要的。
在以下函数中,我复制现有参数并添加一个新参数“userid”。我还将文件数据附加到请求中。
function appendFile(proxyReq, req, res) {
const args = {
...req.body,
userid: "user@id"
}
const filepath = Path.join(".", "uploads", req.body.filename);
const formData = new FormData();
Object.keys(args).map(key => formData.append(key, args[key]));
formData.append('fileupload', FS.readFileSync(filepath), 'file.txt');
proxyReq.setHeader('content-type', `multipart/form-data; boundary=${formData.getBoundary()}`);
proxyReq.setHeader('content-length', formData.getBuffer().length);
proxyReq.write(formData.getBuffer().toString("utf-8"));
proxyReq.end();
}