You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
What are you trying to achieve or the steps to reproduce?
We are using h2o2 to proxy requests. We have found that sending a DELETE request with a content-length of 0 has an unexpected result:
We get a 0 length Buffer as the payload
h2o2 then concludes that since there's no transfer-encoding header in the originating request, (no encoding), there IS a payload, and this is a DELETe method that it should add a transfer-encoding: chunked header
Later on, the overall hapi system concludes (it seems) that since there IS a Buffer instance (even if 0) it will add a content-length header
What was the result you got?
The result is that the request that is sent on has both a transfer-encoding and a content-length header. Evidently, this is technically incorrect. We have two other servers in our systems which do not like this header combination and reject the request. (other servers don't seem to care)
What result did you expect?
Probably that if there is no content, that we do not set a transfer-encoding header?
The text was updated successfully, but these errors were encountered:
deej-split
changed the title
DELETE with content-length 0 produces a technically incorrectpayload
DELETE with content-length 0 produces a technically incorrect payload
Feb 26, 2024
fwiw, we worked around this by defining a custom httpClient that checks if the payload is 0 length, and if so passes a payload of undefined. I'm not sure it is 100% correct, but it works for our need.
Another related h2o2 issue, seems to be that it does not strip hop-by-hop headers (including the already know ones), which can mess up the connection to the proxied server.
Again content-length is not a hop-by-hop header, and it makes no sense that h2o2 strips this when it doesn't do anything to the payload.
Runtime
node.js
Runtime version
v20.11.0
Module version
10.0.4
Last module version without issue
No response
Used with
hapi
Any other relevant information
No response
What are you trying to achieve or the steps to reproduce?
We are using h2o2 to proxy requests. We have found that sending a DELETE request with a content-length of 0 has an unexpected result:
What was the result you got?
The result is that the request that is sent on has both a transfer-encoding and a content-length header. Evidently, this is technically incorrect. We have two other servers in our systems which do not like this header combination and reject the request. (other servers don't seem to care)
What result did you expect?
Probably that if there is no content, that we do not set a transfer-encoding header?
The text was updated successfully, but these errors were encountered: