`content-length` request header is removed when `parseReqBody` is `false`
Problem
When option {parseReqBody: false} is used, the original request content-length header is lost when the request is forwarded to the target origin.
Analysis It looks like the header is removed here: https://github.com/villadora/express-http-proxy/blob/b05cb04fe8e87e215c886462aae264dc70f9a3c5/lib/requestOptions.js#L52-L65
But then is only recalculated when parseReqBody is true, here:
https://github.com/villadora/express-http-proxy/blob/b05cb04fe8e87e215c886462aae264dc70f9a3c5/app/steps/sendProxyRequest.js#L57
Potential solution
When {parseReqBody: false}...
- If
bodyContentis provided, thencontent-lengthcould be determined from the size ofbodyContent - If
bodyContentis not provided (i.e.proxyReqis piped), then the originalcontent-lengthheader could be restored (if defined)
Supposing number item 1 is handled (content-length determined from size of bodyContent), then it may not be necessary to remove content-length from the original request at all. It would be overwritten in sendProxyRequest when appropriate and left alone otherwise.
@mdmower-csnw Thanks for this detailed report. I'll take a look.
@mdmower-csnw Thanks for the report. I ended up following your parenthetical advice and not removing content-length at all.
Thanks for the quick attention on this, @monkpow!