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

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

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

@csrf.exempt

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

app.py

# CSRFProtectクラスをインスタンス化
csrf = CSRFProtect()

wiews.py

from app import csrf

@csrf.exempt
@blueprint.route("/", methods=["GET", "POST"])
def callback():
    return "blueprint page"
タイトルとURLをコピーしました