Maison >développement back-end >Tutoriel Python >Pourquoi ma vérification CSRF Django échoue-t-elle avec les requêtes AJAX POST ?

Pourquoi ma vérification CSRF Django échoue-t-elle avec les requêtes AJAX POST ?

DDD
DDDoriginal
2024-12-07 10:15:12219parcourir

Why is My Django CSRF Check Failing with AJAX POST Requests?

Échec de la vérification CSRF de Django avec la requête POST Ajax

Contexte :
Django utilise une requête intersite Mécanisme de protection contre la contrefaçon (CSRF) pour empêcher les sites Web malveillants de soumettre des formulaires ou de déclencher des actions au nom d'un utilisateur. Cependant, cela peut entraîner des problèmes lors des requêtes AJAX POST.

Solution :

La requête AJAX POST doit inclure le jeton CSRF dans son corps de données pour transmettre le CSRF de Django. vérifier. À l'aide de la fonction $.ajax, cela peut être réalisé en ajoutant simplement la paire clé-valeur csrfmiddlewaretoken à l'objet de données :

$.ajax({
    data: {
        somedata: 'somedata',
        moredata: 'moredata',
        csrfmiddlewaretoken: '{{ csrf_token }}'
    },

Le langage de modèle Django prend en charge une variable spéciale, {{ csrf_token }}, qui récupère et insère le jeton CSRF dans le code JavaScript. Ce jeton est utilisé pour vérifier que la requête provient de la source attendue et empêche les attaques CSRF.

En incorporant le csrfmiddlewaretoken dans le corps de données de la requête AJAX POST, vous vous assurez que Django reconnaît et accepte la requête, permettant il pour traiter les données et effectuer l'action souhaitée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn