On Tue, 29 Mar 2022 19:43:50 GMT, Daniel Fuchs <dfu...@openjdk.org> wrote:

>> src/java.net.http/share/classes/jdk/internal/net/http/Http1Request.java line 
>> 302:
>> 
>>> 300: 
>>> 301:         // GET with no body should not set the Content-Length header
>>> 302:         if (requestPublisher != null || 
>>> !"GET".equals(request.method())) {
>> 
>> Can we remove the check for "GET"? This way we will let the users decide if 
>> they want to send content-length or not, regardless of the chosen request 
>> method.
>
> Practically that would mean not sending Content-Length: 0 by default for GET, 
> DELETE, and HEAD. All other requests methods would have either a 
> Content-Length or Transfer-Encoding. I suspect that HEAD should probably be 
> handled the same way than GET. But should DELETE not have a body? I know that 
> some servers will balk if DELETE has a body. But would they expect 
> Content-Length: 0 not to be included? @Michael-Mc-Mahon what do you think?

RFC 7230 section 3.3.2 says:
"A user agent SHOULD NOT send a
   Content-Length header field when the request message does not contain
   a payload body and the method semantics do not anticipate such a
   body."
I don't think the DELETE method anticipates a a request body. So, it shouldn't 
have a Content-Length header either IMO. Same for HEAD also.

-------------

PR: https://git.openjdk.java.net/jdk/pull/8017

Reply via email to