Node.js Web包配置代理请求正文日志记录

Node.js Web包配置代理请求正文日志记录,node.js,webpack,webpack-dev-server,http-proxy-middleware,Node.js,Webpack,Webpack Dev Server,Http Proxy Middleware,Webpack dev服务器代理配置文档如下所示: 表示它使用http代理中间件: 使用上述链接中记录的onProxyRes功能,我可以执行以下操作: function onProxyRes(proxyRes, req, res) { proxyRes.headers['x-added'] = 'foobar'; // add new header to response delete proxyRes.headers['x-removed']; // r

Webpack dev服务器代理配置文档如下所示:

表示它使用http代理中间件:

使用上述链接中记录的
onProxyRes
功能,我可以执行以下操作:

function onProxyRes(proxyRes, req, res) {
    proxyRes.headers['x-added'] = 'foobar';     // add new header to response
    delete proxyRes.headers['x-removed'];       // remove header from response
    console.log(req.headers)                    // log headers
    console.log(req.body)                  // undefined
    console.log(proxyReq.body)             // undefined
}
我的问题是,尽管其他一切都很好——我无法记录请求主体——它返回
未定义的


有人知道如何读取请求正文以进行调试吗?我是否需要使用npm
主体解析器
模块?如果是,怎么做?thx

我尝试用express模块记录请求,但它导致请求挂起。使用模块记录请求主体修复了它

const anyBody = require('body/any')
onProxyReq(proxyReq, req, res) {
    anyBody(req, res, function (err, body) {
        if (err) console.error(err)
        console.log(body)
    })
})
请注意,我在express中也使用了相同的方法,如下所示:

app.use((req, res, next) => {
    anyBody(req, res, function (err, body) {
        if (err) console.error(err)
        console.log(body)
    })
    next()
})

我尝试用express模块记录请求,但它导致请求挂起。使用模块记录请求主体修复了它

const anyBody = require('body/any')
onProxyReq(proxyReq, req, res) {
    anyBody(req, res, function (err, body) {
        if (err) console.error(err)
        console.log(body)
    })
})
请注意,我在express中也使用了相同的方法,如下所示:

app.use((req, res, next) => {
    anyBody(req, res, function (err, body) {
        if (err) console.error(err)
        console.log(body)
    })
    next()
})

我使用
主体解析器
解决了类似的问题

在将请求发送到服务器之前,我试图修改请求正文,这导致请求挂起,可能是因为修改了正文,请求的
内容长度
不再匹配(导致它被截断)

解决方案是在编写新请求正文之前“调整”
内容长度:

var bodyParser = require('body-parser');   

devServer: {
    before: function (app, server) {
        app.use(bodyParser.json());
    },
    onProxyReq: function (proxyReq, req, res) {
        req.body = {
            ...req.body,
            myProperty: "myPropertyValue"
        };

        const body = JSON.stringify(req.body);

        proxyReq.setHeader('Content-Length', Buffer.byteLength(body));

        proxyReq.write(body);
    }
}

不确定,但在您的情况下,可能是由于添加/删除头而截断了请求,导致请求挂起。

我使用
主体解析器解决了类似的问题

在将请求发送到服务器之前,我试图修改请求正文,这导致请求挂起,可能是因为修改了正文,请求的
内容长度
不再匹配(导致它被截断)

解决方案是在编写新请求正文之前“调整”
内容长度:

var bodyParser = require('body-parser');   

devServer: {
    before: function (app, server) {
        app.use(bodyParser.json());
    },
    onProxyReq: function (proxyReq, req, res) {
        req.body = {
            ...req.body,
            myProperty: "myPropertyValue"
        };

        const body = JSON.stringify(req.body);

        proxyReq.setHeader('Content-Length', Buffer.byteLength(body));

        proxyReq.write(body);
    }
}

不确定,但在您的情况下,可能是由于添加/删除标题而截断了请求,导致其挂起。

虽然此代码可能会回答此问题,但提供有关如何和/或为什么解决此问题的其他上下文将提高答案的长期价值。虽然此代码可能会回答此问题,提供关于如何和/或为什么解决问题的附加上下文将提高答案的长期价值。谢谢!最后是一个干净的解决方案。谢谢!最后是一个干净的解决方案。