Maison >développement back-end >Tutoriel Python >Comment gérer les erreurs Django CSRF avec les requêtes AJAX POST ?

Comment gérer les erreurs Django CSRF avec les requêtes AJAX POST ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-05 02:14:09320parcourir

How to Handle Django CSRF Errors with AJAX POST Requests?

Résolution des erreurs CSRF de Django avec les requêtes POST Ajax

Le framework Django applique la protection CSRF pour empêcher les requêtes intersites malveillantes. Lors des requêtes AJAX POST, cette protection peut entraîner des problèmes si elle n'est pas gérée correctement.

Vérification du jeton CSRF

Pour vérifier que le jeton CSRF est correct, vous pouvez vérifier par rapport à la valeur du cookie csrftoken. Cependant, ce cookie est automatiquement généré côté client, vous ne pouvez donc pas coder en dur une valeur spécifique.

Solution pour les requêtes Ajax POST

La solution suggérée pour les requêtes AJAX POST est pour inclure le jeton CSRF dans le corps des données de la demande. Cela peut être fait en utilisant la fonction .ajax() avec le format de données suivant :

$.ajax({
    data: {
        csrfmiddlewaretoken: '{{ csrf_token }}'
        // Additional request data goes here
    },
    // ... Other options
});

Django View Handling

Dans votre vue Django, vous devez vous assurer que le request.POST contient la clé csrfmiddlewaretoken. Si ce n'est pas le cas, Django rejettera la demande.

Notes supplémentaires

  • Si vous rencontrez une erreur 403 Forbidden lors des requêtes AJAX POST, vérifiez si le Le jeton CSRF est inclus dans le corps des données de la demande.
  • Vous pouvez désactiver la protection CSRF pour des vues spécifiques à l'aide de @csrf_exempt décorateur, mais cela n'est généralement pas recommandé pour des raisons de sécurité.
  • Il est important de suivre les meilleures pratiques en matière de protection CSRF, notamment l'utilisation du cryptage SSL/TLS pour toutes les requêtes.

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