Require server to handle Content-Length
headers when receive
ing HTTP requests
#510
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Add a clause in the spec that:
Content-Length
400 - Bad Request
if the actual length exceeds the announced lengthMotivation
Compatibility with the WSGI spec
As ASGI is a self-described "superset of the WSGI format", it should honour WSGIs stipulation around handling
Content-Length
. PEP 3333 says:The proposed addition would make ASGI compliant with the WSGI specification in this regard, and adding some additional guarantees by changing the server behaviour from should to must.
Confidence for downstream consumers
Currently, ASGI applications can not assume that the
Content-Length
header reflects the actual content length returned by successive calls toreceive()
. This means they can only use theContent-Length
header as a hint if present, but would need to check its consistency themselves if they want to rely on it.Compare this PR where such a feature is discussed: https://github.com/encode/starlette/pull/2328/files#r1397168621