I'm trying to create a simple flask server that redirects any http requests to https. I've created a certificate and key file and registered a `before_request` hook to see if the request is secure and redirect appropriately, following advise [this SO answer](https://stackoverflow.com/a/32238093/9613633).

The flask server responds to https requests as expected. However, when I send an http request, the `before_request` hook never gets called and ther server hangs forever. If I send the http request from the browser, I see an "ERR\_EMPTY\_RESPONSE". The server doesn't even respond to https requests afterwards. No logs are printed either.

Running the app with gunicorn didn't help either. The only difference was that gunicorn is able to detect that the worker is frozen and eventually kills and replaces it. I've also tried using `flask-talisman`, with the same results.

Below is the code I'm running

```py
### server.py
from flask import Flask, request, redirect

def verify_https():
    if not request.is_secure:
        url = request.url.replace("http://", "https://", 1)
        return redirect(url, 301)

def create_flask_app():
    app = Flask(__name__)
    app.before_request(verify_https)
    app.add_url_rule('/', 'root', lambda: "Hello World")
    return app

if __name__ == '__main__':
    app = create_flask_app()
    app.run(
        host="0.0.0.0",
        port=5000,
        ssl_context=('server.crt', 'server.key')
    )

```

Running it with either `python3.8 server.py` or `gunicorn --keyfile 'server.key' --certfile 'server.crt' --bind '0.0.0.0:5000' 'server:create_flask_app()'` and opening a browser window to `localhost:5000` causes the server to hang.