flaskで特定のページだけcsrf保護を除外

この記事について

環境Flask + flask-wtf(CSRFProtect)
目的特定のページ(webhook受信など)だけCSRF保護を外す
結果ルーティングに @csrf.exempt デコレーターを付けて解決

特定のページだけcsrf保護を除外したいときがある。たとえば、lineボットを作るとき、lineからwebhookを受け取るページにcsrf保護を有効にしていると、lineからcsrfトークンを投げてもらうことはできないので、400エラーで通信不可となるため、csrf保護を無効にしたい。

一部ページのみcsrf保護を無効にするにはをルーティングを指定している場所に以下のデコレーターを追記する。

@csrf.exempt

完全なスニペットは次のとおり。

app.py

# CSRFProtectクラスをインスタンス化

csrf = CSRFProtect()

views.py

from app import csrf



@csrf.exempt

@blueprint.route("/", methods=["GET", "POST"])

def callback():

    return "blueprint page"

関連記事 → FlaskでLINEボットを作成時に400エラーが発生した

タイトルとURLをコピーしました