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

Mengapa Cek Django CSRF Saya Gagal dengan Permintaan POST Ajax?

DDD
Lepaskan: 2024-12-04 13:41:14
asal
279 orang telah melayarinya

Why is My Django CSRF Check Failing with an Ajax POST Request?

Django CSRF Check Failed with Ajax Post Request

Seperti yang digariskan dalam dokumentasi Django, mendayakan perlindungan CSRF membantu menghalang serangan permintaan merentas tapak yang berniat jahat. Dengan mengikut arahan, anda cuba melaksanakan semakan CSRF dengan siaran Ajax tetapi masih menghadapi penolakan.

Untuk menyelesaikan masalah ini, pertimbangkan langkah berikut:

  1. Sahkan Kewujudan Token:
    Pastikan kod JavaScript sedang mengambil token CSRF dan menyimpan dalam pembolehubah yang dipanggil csrftoken. Token ini harus ada sebelum menetapkan pengepala:

    $.post("/memorize/", data, function (result) { ... });
    
    var csrftoken = getCookie('csrftoken');
    xhr.setRequestHeader("X-CSRFToken", csrftoken);
    Salin selepas log masuk
  2. Pastikan Penggunaan Token:
    Selepas mendapatkan token, tetapkan secara eksplisit dalam pengepala untuk permintaan Ajax menggunakan setRequestHeader.
  3. Semak Respons Badan:
    Periksa badan respons daripada Django untuk melihat sama ada ia menyebut secara jelas token CSRF yang hilang atau tidak sah.
  4. Kaedah Alternatif (Menggunakan Badan Data):
    Daripada menetapkan pengepala, anda boleh membenamkan token CSRF dalam badan data permintaan Ajax sebagai berikut:

    $.ajax({
        data: {
            csrfmiddlewaretoken: '{{ csrf_token }}',
            ...  // Other data
        },
    });
    Salin selepas log masuk
  5. Dayakan Penyahpepijatan:
    Hidupkan mod nyahpepijat CSRF Django dengan menambahkan DEBUG = Benar pada tetapan. Ini mungkin memberikan mesej ralat atau pembayang tambahan dalam badan respons.

Setelah langkah ini selesai, serahkan semula permintaan Ajax untuk melihat sama ada semakan CSRF berjaya.

Atas ialah kandungan terperinci Mengapa Cek Django CSRF Saya Gagal dengan Permintaan POST Ajax?. 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