Maison  >  Article  >  interface Web  >  Comment résoudre l'erreur 403 lorsque Django utilise des données de publication ajax

Comment résoudre l'erreur 403 lorsque Django utilise des données de publication ajax

亚连
亚连original
2018-05-24 16:53:283093parcourir

Dans Django, lors de l'utilisation des données de publication jquery ajax, une erreur 403 se produira. Comment la résoudre ? Laissez-moi vous aider à résoudre l'erreur 403 lors de l'utilisation de données de publication ajax dans Django. Les amis qui en ont besoin peuvent se référer à

Cet article vous présente deux méthodes dans Django, lors de l'utilisation de données de publication ajax jquery, une erreur 403. se produira, veuillez voir ci-dessous pour plus de détails.

Méthode 1 :

Si jQuery est utilisé pour gérer ajax, Django envoie directement un morceau de code pour résoudre le problème. Mettez-le dans un fichier js séparé et introduisez-le dans la page html. Notez que ce fichier js doit être introduit après l'introduction du fichier jquery js

$(document).ajaxSend(function(event, xhr, settings) { 
 function getCookie(name) { 
  var cookieValue = null; 
  if (document.cookie && document.cookie != '') { 
   var cookies = document.cookie.split(';'); 
   for (var i = ; i < cookies.length; i++) { 
    var cookie = jQuery.trim(cookies[i]); 
    // Does this cookie string begin with the name we want? 
    if (cookie.substring(, name.length + ) == (name + &#39;=&#39;)) { 
     cookieValue = decodeURIComponent(cookie.substring(name.length + )); 
     break; 
    } 
   } 
  } 
  return cookieValue; 
 } 
 function sameOrigin(url) { 
  // url could be relative or scheme relative or absolute 
  var host = document.location.host; // host + port 
  var protocol = document.location.protocol; 
  var sr_origin = &#39;//&#39; + host; 
  var origin = protocol + sr_origin; 
  // Allow absolute or scheme relative URLs to same origin 
  return (url == origin || url.slice(, origin.length + ) == origin + &#39;/&#39;) || 
   (url == sr_origin || url.slice(, sr_origin.length + ) == sr_origin + &#39;/&#39;) || 
   // or any other URL that isn&#39;t scheme relative or absolute i.e relative. 
   !(/^(\/\/|http:|https:).*/.test(url)); 
 } 
 function safeMethod(method) { 
  return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); 
 } 
 if (!safeMethod(settings.type) && sameOrigin(settings.url)) { 
  xhr.setRequestHeader("X-CSRFToken", getCookie(&#39;csrftoken&#39;)); 
 } 
});

Méthode 2 :

Ajouter @ avant la vue qui gère les données de publication Le csrf_exempt décorateur

tel que

@csrf_exempt 
def profile_delte(request): 
 del_file=request.POST.get("delete_file",&#39;&#39;)

est ce que j'ai compilé pour vous, j'espère que cela vous sera utile à l'avenir.

Articles connexes :

Une brève introduction à l'écriture d'Ajax sans bibliothèque (framework)

Implémentation de la fonction de téléchargement de fichiers basée sur Ajax et HTML5 dans MVC

Jquery et php combinés pour implémenter l'interrogation longue AJAX

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