flask: Chunked uploads missing body data.

Summary

In basic Flask applications, the body data of chunked uploads appears to go missing: that is, they do not appear in request.data. I have reproduced this with two different WSGI servers (gunicorn and twisted), both of which handle chunked data appropriately. Non-chunked data does not suffer this problem. I’ve reproduced this problem on both Python 2.7 and Python 3.6.

Reproduction

The following Flask application demonstrates the problem:

from flask import Flask, request
app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def hello_world():
    return request.data

when run like this: gunicorn -w 4 example:app.

The following test script can be run:

import requests

def gen():
    yield b"hello"
    yield b"world"

print("Making first request")
r = requests.post('http://localhost:8000/', data=b'helloworld')
print("Got: %s" % r.content.decode('utf-8'))
print("Making second request")
r = requests.post('http://localhost:8000/', data=gen())
print("Got: %s" % r.content.decode('utf-8'))

Expected Output

Making first request
Got: helloworld
Making second request
Got: helloworld

Actual Output

Making first request
Got: helloworld
Making second request
Got: 

Environment

% python -VV                                      
Python 3.6.0 (default, Jan 18 2017, 18:08:34) 
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)]
% pip freeze                                      
appdirs==1.4.3
click==6.7
Flask==0.12.1
gunicorn==19.7.1
itsdangerous==0.24
Jinja2==2.9.6
MarkupSafe==1.0
packaging==16.8
pyparsing==2.2.0
six==1.10.0
Werkzeug==0.12.1

References

This was spotted at httpbin. See kennethreitz/httpbin#340 for more.

About this issue

  • Original URL
  • State: closed
  • Created 7 years ago
  • Reactions: 5
  • Comments: 29 (14 by maintainers)

Most upvoted comments

I’m still having issues with this in Flask 1.0.2 and both gunicorn 19.7.1 & uwsgi 2.0.17

Can’t seem to get the request body no matter what I try. Any known workarounds?

See pallets/werkzeug#1149, fix needs to be fixed.

I appear to be having a similar issue in Flask 1.0.2 with mod_wsgi where the request body is going missing only when it is mod_wsgi that launches flask. i have attached the debug output from my .wsgi app. Can anyone confirm that this is the same issue?

[Tue May 14 17:17:12.639947 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] ('REQUEST',
[Tue May 14 17:17:12.639981 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640474 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] {'CONTENT_LENGTH': '2686',
[Tue May 14 17:17:12.640483 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640495 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'CONTENT_TYPE': 'application/json; charset=utf-8',
[Tue May 14 17:17:12.640500 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640511 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'CONTEXT_DOCUMENT_ROOT': '/opt/lampstack-7.1.26-0/apache2/htdocs',
[Tue May 14 17:17:12.640516 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640526 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'CONTEXT_PREFIX': '',
[Tue May 14 17:17:12.640530 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640540 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'DOCUMENT_ROOT': '/opt/lampstack-7.1.26-0/apache2/htdocs',
[Tue May 14 17:17:12.640545 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640555 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'GATEWAY_INTERFACE': 'CGI/1.1',
[Tue May 14 17:17:12.640559 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640569 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'HTTP_ACCEPT': 'application/json',
[Tue May 14 17:17:12.640574 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640583 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'HTTP_ACCEPT_CHARSET': 'utf-8',
[Tue May 14 17:17:12.640588 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640597 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'HTTP_CONNECTION': 'Keep-Alive',
[Tue May 14 17:17:12.640602 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640611 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'HTTP_HOST': 'www.altbrains.com',
[Tue May 14 17:17:12.640616 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640657 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'HTTP_SIGNATURE': 'SuKzPjhCLGR2wEBMuqS4gCEl2YSfnGZlCAXl1ABZmJA6/wL1ckVWk9Wo5ihijXMk1MyrRCmALTbruhsECSIa/rg3WSsrX5MeNVbhz6uj1IXlF+JjnRDZ7YOe/Yrri6BS4fdURDX6RRDzOKqTvg7D0MnnRHq/2JrpBQQSs0Ruue/M/WbrMkQTu7qBx/gVpol5ejcz00VPZA9ycXTJwdgRJQ00egu9dWCtEKKGMiw7zjyRHCANLZjX75q79PG97A6d//YUdurPN+pjjot2xEeFVOTzjAH2Mua2bdwLgULCThxKF94pgjcxY7+ciXgAqcrok1Liv/4A2MzprzEhBe3NXg==',
[Tue May 14 17:17:12.640666 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640689 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'HTTP_SIGNATURECERTCHAINURL': 'https://s3.amazonaws.com/echo.api/echo-api-cert-6-ats.pem',
[Tue May 14 17:17:12.640695 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640706 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'HTTP_USER_AGENT': 'Apache-HttpClient/4.5.x (Java/1.8.0_202)',
[Tue May 14 17:17:12.640711 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640737 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'LD_LIBRARY_PATH': '/opt/lampstack-7.1.26-0/sqlite/lib:/opt/lampstack-7.1.26-0/mysql/lib:/opt/lampstack-7.1.26-0/apache2/lib:/opt/lampstack-7.1.26-0/common/lib:/opt/lampstack-7.1.26-0/sqlite/lib:/opt/lampstack-7.1.26-0/mysql/lib:/opt/lampstack-7.1.26-0/apache2/lib:/opt/lampstack-7.1.26-0/common/lib:/opt/lampstack-7.1.26-0/git/lib:/opt/lampstack-7.1.26-0/sqlite/lib:/opt/lampstack-7.1.26-0/mysql/lib:/opt/lampstack-7.1.26-0/apache2/lib:/opt/lampstack-7.1.26-0/common/lib',
[Tue May 14 17:17:12.640762 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640774 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'PATH_INFO': '',
[Tue May 14 17:17:12.640778 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640788 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'QUERY_STRING': '',
[Tue May 14 17:17:12.640793 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640802 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'REMOTE_ADDR': '72.21.217.41',
[Tue May 14 17:17:12.640807 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640817 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'REMOTE_PORT': '5927',
[Tue May 14 17:17:12.640821 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640831 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'REQUEST_METHOD': 'POST',
[Tue May 14 17:17:12.640835 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640844 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'REQUEST_SCHEME': 'https',
[Tue May 14 17:17:12.640849 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640859 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'REQUEST_URI': '/basketball',
[Tue May 14 17:17:12.640863 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640873 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'SCRIPT_FILENAME': '/home/ubuntu/voice/AltBrains_Basketball/basketball.wsgi',
[Tue May 14 17:17:12.640878 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640887 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'SCRIPT_NAME': '/basketball',
[Tue May 14 17:17:12.640892 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640901 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'SERVER_ADDR': '172.30.0.65',
[Tue May 14 17:17:12.640905 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640915 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'SERVER_ADMIN': 'you@example.com',
[Tue May 14 17:17:12.640919 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640929 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'SERVER_NAME': 'www.altbrains.com',
[Tue May 14 17:17:12.640933 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640943 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'SERVER_PORT': '443',
[Tue May 14 17:17:12.640947 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640957 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'SERVER_PROTOCOL': 'HTTP/1.1',
[Tue May 14 17:17:12.640961 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640971 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'SERVER_SIGNATURE': '',
[Tue May 14 17:17:12.640975 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640984 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'SERVER_SOFTWARE': 'Apache',
[Tue May 14 17:17:12.640989 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.640998 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'SSL_TLS_SNI': 'www.altbrains.com',
[Tue May 14 17:17:12.641003 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641020 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'apache.version': (2, 4, 29),
[Tue May 14 17:17:12.641025 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641039 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'mod_wsgi.application_group': 'localhost|/basketball',
[Tue May 14 17:17:12.641044 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641054 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'mod_wsgi.callable_object': 'application',
[Tue May 14 17:17:12.641058 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641068 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'mod_wsgi.connection_id': 'ws0lNLzQwAE',
[Tue May 14 17:17:12.641072 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641082 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'mod_wsgi.daemon_connects': '1',
[Tue May 14 17:17:12.641086 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641096 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'mod_wsgi.daemon_restarts': '0',
[Tue May 14 17:17:12.641100 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641110 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'mod_wsgi.daemon_start': '1557854232639360',
[Tue May 14 17:17:12.641114 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641124 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'mod_wsgi.enable_sendfile': '0',
[Tue May 14 17:17:12.641128 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641137 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'mod_wsgi.handler_script': '',
[Tue May 14 17:17:12.641142 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641151 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'mod_wsgi.ignore_activity': '0',
[Tue May 14 17:17:12.641155 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641165 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'mod_wsgi.listener_host': '',
[Tue May 14 17:17:12.641169 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641178 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'mod_wsgi.listener_port': '443',
[Tue May 14 17:17:12.641183 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641192 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'mod_wsgi.path_info': '',
[Tue May 14 17:17:12.641197 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641206 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'mod_wsgi.process_group': 'basketball',
[Tue May 14 17:17:12.641211 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641220 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'mod_wsgi.queue_start': '1557854232639206',
[Tue May 14 17:17:12.641225 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641234 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'mod_wsgi.request_handler': 'wsgi-script',
[Tue May 14 17:17:12.641239 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641248 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'mod_wsgi.request_id': 'bPYlNLzQwAE',
[Tue May 14 17:17:12.641253 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641262 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'mod_wsgi.request_start': '1557854232639084',
[Tue May 14 17:17:12.641266 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641276 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'mod_wsgi.script_name': '/basketball',
[Tue May 14 17:17:12.641284 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641294 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'mod_wsgi.script_reloading': '1',
[Tue May 14 17:17:12.641299 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641308 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'mod_wsgi.script_start': '1557854232639445',
[Tue May 14 17:17:12.641316 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641326 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'mod_wsgi.thread_id': 2,
[Tue May 14 17:17:12.641331 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641341 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'mod_wsgi.thread_requests': 0,
[Tue May 14 17:17:12.641345 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641355 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'mod_wsgi.total_requests': 3,
[Tue May 14 17:17:12.641359 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641374 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'mod_wsgi.version': (4, 6, 5),
[Tue May 14 17:17:12.641379 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641396 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'wsgi.errors': <_io.TextIOWrapper name='<wsgi.errors>' encoding='utf-8'>,
[Tue May 14 17:17:12.641405 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641418 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'wsgi.file_wrapper': <class 'mod_wsgi.FileWrapper'>,
[Tue May 14 17:17:12.641423 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641437 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'wsgi.input': <mod_wsgi.Input object at 0x7fc1742c1c70>,
[Tue May 14 17:17:12.641442 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641452 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'wsgi.input_terminated': True,
[Tue May 14 17:17:12.641456 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641466 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'wsgi.multiprocess': False,
[Tue May 14 17:17:12.641470 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641480 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'wsgi.multithread': True,
[Tue May 14 17:17:12.641484 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641494 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'wsgi.run_once': False,
[Tue May 14 17:17:12.641498 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641508 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'wsgi.url_scheme': 'https',
[Tue May 14 17:17:12.641512 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.641532 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] 'wsgi.version': (1, 0)})
[Tue May 14 17:17:12.642418 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] ('RESPONSE',
[Tue May 14 17:17:12.642432 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.642445 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] '308 PERMANENT REDIRECT',
[Tue May 14 17:17:12.642450 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.642486 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] [('Content-Type', 'text/html; charset=utf-8'),
[Tue May 14 17:17:12.642492 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.642505 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] ('Content-Length', '281'),
[Tue May 14 17:17:12.642510 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927]
[Tue May 14 17:17:12.642525 2019] [wsgi:error] [pid 2325] [remote 72.21.217.41:5927] ('Location', 'https://www.altbrains.com/basketball/')])
[Tue May 14 17:17:29.096614 2019] [ssl:info] [pid 31818] [client 178.154.244.190:49805] AH01964: Connection to child 8 established (server localhost:443)
[Tue May 14 17:17:29.354443 2019] [core:info] [pid 31818] [client 178.154.244.190:49805] AH00128: File does not exist: /opt/lampstack-7.1.26-0/apache2/htdocs/robots.txt
[Tue May 14 17:17:32.923909 2019] [ssl:info] [pid 31307] [client 37.9.87.150:42833] AH01964: Connection to child 0 established (server localhost:443)
[Tue May 14 17:18:19.832119 2019] [ssl:info] [pid 31327] [client 192.0.102.40:49892] AH01964: Connection to child 5 established (server localhost:443)
[Tue May 14 17:18:33.960589 2019] [ssl:info] [pid 32606] [client 209.133.111.211:44328] AH01964: Connection to child 9 established (server localhost:443)
[Tue May 14 17:18:34.031851 2019] [ssl:info] [pid 32606] (70014)End of file found: [client 209.133.111.211:44328] AH01991: SSL input filter read failed.

@untitaker Sure, that’s reasonable, but that means that Flask/werkzeug needs to find a way to cope with this that isn’t “assume there is no body”. If the answer is “servers must support the relevant werkzeug extension” then that’s fine, but that needs to be documented really clearly somewhere to make it clear to server authors that if they don’t implement it then Flask won’t see any chunked bodies. Alternatively, Flask/werkzeug could implement some heuristics regarding headers and the first few bytes of the body to try to work out what the server is doing.

I don’t mind at all what direction you choose to go. 😁

More generally it makes it basically impossible for werkzeug-using applications to sensibly handle chunked transfer encoding without having their WSGI server buffer the entire inbound data stream, which seems like a pretty unreasonable requirement.