ホームページ >バックエンド開発 >Python チュートリアル >Ajax POST リクエストで Django CSRF チェックが失敗するのはなぜですか?
Ajax Post リクエストで Django CSRF チェックが失敗する
Django のドキュメントで説明されているように、CSRF 保護を有効にすると、悪意のあるクロスサイト リクエスト攻撃を防ぐことができます。指示に従って、Ajax ポスティングを使用して CSRF チェックを実装しようとしましたが、依然として拒否が発生しています。
この問題をトラブルシューティングするには、次の手順を検討してください:
トークンの存在の確認:
JavaScript コードが CSRF トークンをフェッチしていることを確認します。そしてそれを csrftoken という変数に保存します。このトークンはヘッダーを設定する前に存在する必要があります:
$.post("/memorize/", data, function (result) { ... }); var csrftoken = getCookie('csrftoken'); xhr.setRequestHeader("X-CSRFToken", csrftoken);
代替方法 (データ本文を使用):
ヘッダーを設定する代わりに、Ajax リクエストのデータ本体に CSRF トークンを埋め込むことができます次のように:
$.ajax({ data: { csrfmiddlewaretoken: '{{ csrf_token }}', ... // Other data }, });
これらの手順が完了したら、Ajax リクエストを再送信して、CSRF チェックが正常にパスしたかどうかを確認します。
以上がAjax POST リクエストで Django CSRF チェックが失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。