如何在烧瓶中将http重定向到https

how to redirect http to https in flask

我的 Flask 应用程序将 http 重定向到 https。我发现 但它不起作用。

from flask import Flask, request, redirect
from werkzeug.serving import make_ssl_devcert


make_ssl_devcert('key')

app = Flask(__name__)

@app.before_request
def before_request():
    if request.url.startswith('http://'):
        url = request.url.replace('http://', 'https://', 1)
        code = 301
        return redirect(url, code=code)

@app.route("/")
def hello():
    return "Hello World!"


if __name__ == "__main__":
    app.run(host='127.0.0.1', port=443, debug=False, ssl_context=('key.crt', 'key.key'))

首先,这最好由 nginx 或您在 flask

前面使用的任何东西来完成

对于你的问题,你只在 443 端口上监听,而不是 80,这是 http 使用的端口,因此 http 请求实际上并没有到达你的服务器。