2017-01-10 31 views
1

Flask-WTFのCSRFProtect拡張機能を使用してCSRFトークン保護を追加しようとしています。このCSRFの保護を除いて、アプリはWTFormを使用していません。Flask-WTF CSRFProtectが "400 CSRFトークンがありません"エラーを返します

私はthe docsに続きましたが、「400 Bad Request CSRFトークンがありません」というメッセージが表示されます。

from flask_wtf.csrf import CSRFProtect 
csrf = CSRFProtect(app) 

私は次のテンプレートを(フォームまたはフォームなしで)入れますが、同じエラーが発生します。

<form method="post"> 
    <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/> 
</form> 
+0

あなたのアプリにどのように投稿していますか? JavaScriptを使用している場合は、特定のフォームを送信していない限り、フォームフィールドについては何も分かりません。ドキュメントはこれについてうまくいけば分かります。 [編集]に[mcve]を含めるようにしてください。 – davidism

+0

いいえ、それは伝統的なフォームのページであり、データを投稿するためにJavaScriptを使用していません。それぞれのフォームに ''を追加しました –

+0

[編集]に[mcve]を含めてください。 – davidism

答えて

0

this answerで説明したように、実際のCSFRの検証フローを検査:

あなたはvalidate_csrf()機能で、 flask_wtf/csrf.pyファイルで検証をデバッグすることができます。

は私にとっては、問題がフラスコフラスコ-WTFの最近の更新によって引き起こされました。プロジェクト内のすべてのファイル.pycを削除して解決しました。しかし、私の場合、実際の根本原因はわかりません。

find . -name '*.pyc' -delete 

 

その後編集:フラスコ、フラスコ、WTFの最新バージョンに

  • 更新。
  • ご使用の開発環境で、HTTPSの代わりにHTTPを使用する場合は、SESSION_COOKIE_SECURETrueに設定されていないことを確認してください。 thisを参照してください。
関連する問題