Open mdmower-csnw opened 1 month ago
@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!
Problem When option
{parseReqBody: false}
is used, the original requestcontent-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
istrue
, here: https://github.com/villadora/express-http-proxy/blob/b05cb04fe8e87e215c886462aae264dc70f9a3c5/app/steps/sendProxyRequest.js#L57Potential solution When
{parseReqBody: false}
...bodyContent
is provided, thencontent-length
could be determined from the size ofbodyContent
bodyContent
is not provided (i.e.proxyReq
is piped), then the originalcontent-length
header could be restored (if defined)Supposing number item 1 is handled (
content-length
determined from size ofbodyContent
), then it may not be necessary to removecontent-length
from the original request at all. It would be overwritten insendProxyRequest
when appropriate and left alone otherwise.