ホームページ > バックエンド開発 > Python チュートリアル > AJAX POST リクエストが Django CSRF チェックで失敗するのはなぜですか?

AJAX POST リクエストが Django CSRF チェックで失敗するのはなぜですか?

DDD
リリース: 2024-12-08 05:38:09
オリジナル
155 人が閲覧しました

Why Do My AJAX POST Requests Fail with a Django CSRF Check?

Ajax POST リクエストによる Django CSRF チェックの失敗

概要:

Django はビルドされた-クロスサイト リクエスト フォージェリ (CSRF) 攻撃から保護するメカニズム。ただし、この保護は AJAX POST リクエストに干渉する場合があります。この記事では、この問題について説明し、解決策を示します。

問題:

Django の CSRF が原因で、Django ビューへの AJAX POST リクエストが 403 Forbidden エラーで失敗する場合がある保護。このエラーは、リクエスト内の CSRF トークンが Django によって生成されたものと一致しない場合に発生します。

原因:

Ajax リクエスト (JavaScript を使用) は、リクエストヘッダーに CSRF トークンが含まれているため、CSRF チェックが失敗します。 Django.

解決策:

この問題を解決するには、CSRF トークンを Ajax リクエストのデータ本体に手動で追加します。これは、data プロパティを指定した $.ajax 関数を使用して実行できます。

$.ajax({
    data: {
        somedata: 'somedata',
        moredata: 'moredata',
        csrfmiddlewaretoken: '{{ csrf_token }}'
    },
    ...  // other Ajax options
});
ログイン後にコピー

Verification:

トークンが正しいことを確認するには、 Ajax リクエストを行う前に csrfmiddlewaretoken Cookie の値を確認します。この Cookie には csrf トークンが含まれています。

代替:

元の質問で述べたように、csrf_exempt デコレータを使用してビューの CSRF チェックを無効にすることは理想的なアプローチではありません。 CSRF 保護メカニズムに確実に準拠することをお勧めします。

以上がAJAX POST リクエストが Django CSRF チェックで失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート