Node.js 修改节点http代理请求正文

Node.js 修改节点http代理请求正文,node.js,express,node-http-proxy,Node.js,Express,Node Http Proxy,我正在使用node http proxy尝试在我的node/express web服务器中代理请求。我试图在路由级别将主体附加到特定请求中,但得到的响应表明req.body不存在 const proxy = httpProxy.createProxyServer({ changeOrigin: true, target: process.env.API_URL, port: 80 }); server.post('/api/login_check', (req, re

我正在使用
node http proxy
尝试在我的node/express web服务器中代理请求。我试图在路由级别将主体附加到特定请求中,但得到的响应表明
req.body
不存在

const proxy = httpProxy.createProxyServer({
    changeOrigin: true,
    target: process.env.API_URL,
    port: 80
});


server.post('/api/login_check', (req, res) => {
    req.url = req.url.replace('/api', '');
    req.headers['Content-Type'] = 'application/json';
    req.headers['accept'] = 'application/json';
    req.body = JSON.stringify({
        username: process.env.USERNAME,
        password: process.env.PASSWORD
    });
    proxy.web(req, res);
});

如果我正确理解您的意思,那么在路由级别使用
节点http代理是否可以做到这一点

  • 只要您传递req和res对象,proxy.web就可以在路由级别工作
  • 您可以在代理事件上更改传入请求的正文
proxy.on('proxyReq',函数(proxyReq,req,res,options){
//她说,你可以创造条件确定你的路径
if(req.body&&req.url==“/user”&&req.method==“POST”){
让bodyData=JSON.stringify(req.body);
proxyReq.setHeader('Content-Length',Buffer.ByTeleLength(bodyData));
//流式传输内容
proxyReq.写入(bodyData);
}
});