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
Libérer: 2024-12-07 10:15:12
original
173 Les gens l'ont consulté

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 }}'
    },
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal