Demian Brecht added the comment:

My concern about this is around the combination of the following two passages:

draft-ietf-httpbis-p2-semantics-14, Section 7.3:

>   Bodies on GET requests have no defined semantics.  Note that sending
>   a body on a GET request might cause some existing implementations to
>   reject the request.

RFC 7230, Section 3.3.2:

> The presence of a message body in a request is signaled by a Content-Length 
> or Transfer-Encoding header field.

My concern around the above is the possibility that servers may have 
implementations that reject requests with methods that are not expecting bodies 
solely on the existence of the Content-Length header rather than the value 
(which may be 0). Without a good amount of research around whether or not this 
would be an actual problem in practice, I wouldn’t be comfortable adding 
Content-Length header to every request.

> My feeling is that stripping out Content-Length for GET requests could cause 
> problems for some code that for whatever reason uses this

That’s definitely a valid concern. What if the logic was tweaked a little:

expecting_len = method.upper() in _METHODS_EXPECTING_BODIES or \
    body is not None

if expecting_len and 'content-length' not in header_names:
    self._set_content_length(body)

That way, if someone is intentionally sending a body in a GET request, the 
value of Content-Length would still be automatically added, but would still be 
set to 0 for all other cases where bodies are expected.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue23539>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to