Log Request/Responses Bodies with Http-Proxy-Middleware

I'm using http-proxy-middleware to implement a transparent proxy.

I'd like to do request/response inspection. I mean, I'd like to print in a text file request/responses that go through the proxy whithout do any modifying on them.

Up to now, what I'm using is something like that (simplified version):

app.use('/proxy/:service/', proxy({
        pathRewrite: function(path, req){
            ...
        },
        router: function(req) {
            ...
        },
        onProxyRes: function(proxyRes, req, res) {
            log("Req URL: " + req.originalUrl);
            log("Response status code: " + proxyRes.statusCode);
        }
}));

(log() is a helper function that uses a string as input and prints it is my log file)

Thus, basically I'm using onProxyRes to intercept the response and do logging at that point. The problem is that I have been only able to make it work for things like URL, status code, headers, etc. but I haven't find the payload body in req and/or resProxy objects.

I have read about how to get the res body here. However, it seems to be complex solution (needs to set a data event handler). And it doesn't cover the req body, as far as I understand.

Any hint/help/reference is hightly appreciated, please. Not sure if even using onProxyRes is the best way of implementing this, maybe the library provides some functionality to cover the request/response case.

2 Answers

If you use latest express version, this will work.

app.use(express.json())
app.use('/proxy/:service/', proxy({
        onProxyRes: function(proxyRes, req, res) {
            log("Req URL: " + req.originalUrl);
            log("Response status code: " + proxyRes.statusCode);
        }
}));

If you want the req.body, you have to use a library to get it (or build it out of the stream yourself). I recommend body-parser

1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Chloe Bennett

Chloe Bennett

Culture, Media & Entertainment Columnist

Chloe Bennett explores the intersection of pop culture, streaming entertainment, digital trends, and contemporary lifestyle. Her weekly commentary reaches thousands of culture enthusiasts.

Share this article
Twitter Facebook Pinterest