Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Permintaan AJAX POST Saya Gagal dengan Pemeriksaan CSRF Django?

Mengapa Permintaan AJAX POST Saya Gagal dengan Pemeriksaan CSRF Django?

DDD
Lepaskan: 2024-12-08 05:38:09
asal
155 orang telah melayarinya

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

Django CSRF Semak Kegagalan dengan Ajax POST Requests

Pengenalan:

Django melaksanakan binaan -in mekanisme untuk melindungi daripada serangan Cross-Site Request Forgery (CSRF). Walau bagaimanapun, perlindungan ini kadangkala boleh mengganggu permintaan AJAX POST. Artikel ini akan menerangkan isu dan menyediakan penyelesaian.

Masalah:

Permintaan AJAX POST kepada paparan Django mungkin gagal dengan ralat 403 Forbidden disebabkan oleh CSRF Django perlindungan. Ralat berlaku apabila token CSRF dalam permintaan tidak sepadan dengan yang dijana oleh Django.

Punca:

Permintaan Ajax (menggunakan JavaScript) mungkin tidak menghantar secara automatik Token CSRF dalam pengepala permintaan, yang membawa kepada semakan CSRF gagal masuk Django.

Penyelesaian:

Untuk menyelesaikan isu ini, tambahkan token CSRF secara manual pada badan data permintaan Ajax. Ini boleh dilakukan menggunakan fungsi $.ajax dengan sifat data:

$.ajax({
    data: {
        somedata: 'somedata',
        moredata: 'moredata',
        csrfmiddlewaretoken: '{{ csrf_token }}'
    },
    ...  // other Ajax options
});
Salin selepas log masuk

Pengesahan:

Untuk mengesahkan bahawa token itu betul, anda boleh memeriksa nilai kuki csrfmiddlewaretoken sebelum membuat permintaan Ajax. Kuki ini mengandungi token csrf.

Alternatif:

Seperti yang dinyatakan dalam soalan asal, melumpuhkan semakan CSRF untuk paparan menggunakan penghias csrf_exempt bukanlah pendekatan yang ideal . Adalah disyorkan untuk memastikan pematuhan dengan mekanisme perlindungan CSRF.

Atas ialah kandungan terperinci Mengapa Permintaan AJAX POST Saya Gagal dengan Pemeriksaan CSRF Django?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan