2017-01-11 1 views
0

J'envoie une requête post via AJAX à api (la page en cours et l'API sont sous le même hôte). Je reçois csrf failed: csrf token missing or incorrect error. Cela est arrivé quand j'ai mis à jour vers django 1.10 de 1.8. J'ai aussi vérifié avec django 1.9 et l'erreur persiste sur 1.9. Voici la boucle de détail:Echec CSRF: Jeton CSRF manquant ou incorrect après la mise à niveau vers django 1.10 à partir de 1.8

curl 'https://tru-staging.com/pagemaker/api/v1/carousel/slide/' -H 'Pragma: no-cache' -H 'Origin: https://tru-staging.com' -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept-Language: en-US,en;q=0.8,ar;q=0.6' -H 'Authorization: Token undefined' -H 'Content-Type: application/json;charset=UTF-8' -H 'Accept: application/json, text/plain, */*' -H 'Cache-Control: no-cache' -H 'X-CSRFToken: UMQPAIb1OTl7MyiQLJttdKE8xOLz35pMaHeNGMMDqy0Jn3x8SpbaEUmzOQk7Fppr' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36' -H 'Cookie: _ga=GA1.2.2131330908.1484113382; sessionid=nnxqi67j18tblt985vayyz4ssyhdnfjm; csrftoken=o6gjW1Sxb1X23hI9RurDIAXjSuEbbgbMQJtMQyS2gT1yTnCGF80rmmB8pwSOSKKj' -H 'Connection: keep-alive' -H 'Referer: https://tru-staging.com/68/school_landing/' --data-binary '{"order":4,"carousel":736}' —compressed

Répondre

0

L'en-tête X-CSRFToken ne correspond pas à la valeur du cookie csrftoken de la ligne de commande ci-dessus. Le message d'erreur spécifique provient de:

https://github.com/django/django/blob/master/django/middleware/csrf.py#L313

Cela indique que le CSRF jetons en effet ne correspondent pas.

+0

Qu'est-ce qui cause cela? – sachitad

+0

Comment paramétrez-vous X-CSRFToken avant d'appeler AJAX? Je suppose que vous avez une fonction getCookie() qui l'attrape? – Scovetta

+0

Je fais. Je suis l'en-tête de paramètres comme ceci: https://gist.github.com/sachitad/793b96e56ca719f77bae687085bcd99a – sachitad