FlaskでURLの作成にHTTPSを使用する

ロードバランサーを使用するとき、URL の作成やリダイレクトに HTTPS を使用したいです。

Flask では、PREFERRED_URL_SCHEME を提供しているが、PREFERRED_URL_SCHEME に https を指定しても機能しなかったのです。

WSGI ライブラリ werkzeug のミドルウェア ProxyFix を利用すれば、HTTPS スキームを使用することができる。

このミドルウェアは、プロキシやロードバランサーが設定した X-Forwarded ヘッダーに基づいて WSGI 環境変数を自動的に設定する。

from werkzeug.middleware.proxy_fix import ProxyFix

def create_app():
    app = Flask(__name__)
    ...
    app.config["PREFERRED_URL_SCHEME"] = 'https'
    app.wsgi_app = ProxyFix(app.wsgi_app,
                            x_for=1, x_proto=1, x_host=1, x_port=1)

Tags:

Updated: