2012-11-27 4 views
0

j'ai écrit une vue simple Django:Django Voir le retour JSON a échoué avec CSRF

from django.http import HttpResponse 
from django.utils import simplejson 
from django.views.decorators.csrf import csrf_exempt # just add 

@csrf_exempt 
def handleRequest(request, intervention_code): 
    result = {} 
    norm_str = '' 
    ........ 
    return HttpResponse(simplejson.dumps(result), mimetype='application/json') 

La vue utilise pas de modèle, juste interroge la base et renvoie les données au format JSON. je peux récupérer l'objet JSON facilement faire http://myserver/myurl

Malheureusement, je dois utiliser une bibliothèque javascript pour faire une demande AJAX POST pour obtenir le même objet JSON et je courir dans l'échec typique Django CSRF.

Quand je le fais: curl -d "sometext=foobar" http://myserver/myurl/ J'ai obtenu le même résultat. J'ai implémenté tous les middlewares CSRF recommandés depuis Django doc, et j'obtiens toujours l'erreur.

+0

Cela ne suffit pas ... Montrez-nous comment vous envoyez la demande au serveur –

+0

Envoyez-vous le jeton CSRF au serveur lorsque vous faites votre post ajax? –

+0

S'il vous plaît élaborer plus. L'appel AJAX est fait à partir de la fonction javascript appelée à partir du fichier html normal –

Répondre

2

La documentation describes ce que vous devez faire pour que CSRF fonctionne avec Ajax.

+0

Merci pour votre aide. Daniel m'a montré le document Django et ça a fonctionné maintenant. J'ai choisi de l'implémenter sans toucher au script ajax. –

Questions connexes