J'essaie de créer un formulaire qui télécharge un fichier zip sur le serveur. Mais chaque fois que je clique sur la soumission, je continue à obtenir dans mon code .js: p> la vérification CSRF a échoué code> erreur. Ceci est mon code HTML:
4 Réponses :
dans html p> {% csrf_token%} code> est champ de saisie caché non a
valeur code>
let csrfToken = $("#csrf_token").val();
var json_data = {'csrfmiddlewaretoken' : csrfToken, 'file': formData };
Avez-vous essayé avec le CSRF basé sur le cookie fourni par Django Doc? Ajoutez 'csrfmiddlewaretank': csrftoken, code> dans You JSON_DATA P> < / p>
La meilleure approche est probablement celle décrite dans Django Documentation: Demande de site croisée Protection contrefusion
Si votre Pour inclure le jeton CSRF dans vos demandes AJAX, vous l'incluez dans les en-têtes de demande avec ce code: P> CSRF_USESESSIONS CODE> et
CSRF_COOKIE_HTTPONLY CODE> Les paramètres sont
false code>, je vous suggère de créer
init.js code> fichier et le chargez toujours dans votre modèle HTML de base. Incluez ces deux fonctions dans ce fichier: p>
var csrftoken = $("[name=csrfmiddlewaretoken]").val();
$.ajax({
beforeSend: function(xhr, settings) {
if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
},
url: ...
...
...
});
Une solution simple consiste à utiliser S'assurer_csrf_cookie
dans la vue qui rend la page. Important, le décorateur doit être en vue qui rend la page,
Pas dans la vue qui reçoit la requête post code>.
Êtes-vous sûr de l'état d'importation?
Nope, c'était une erreur de copie et de pâte, j'ai édité la réponse
Merci. Je l'ai essayé mais je continue à obtenir la même erreur interdite.
Avez-vous essayé d'ajouter
{{csrf_token}} code> comme ceci {{ csrf_token}} code> et non à l'extérieur de votre formulaire.
Oui mais je continue à obtenir la même erreur. Interdit.