2016-03-06 44 views
1

我使用django restframe工作,当我使用浏览器发送PUT请求时,它工作正常。但是当我使用ajax发送请求时,就像之前一样,它告诉我csrf令牌丢失或incorrected。发送正确的CSRF令牌后CSRF失败

我的jQuery代码看起来是这样的:

$.ajax({ 
    url: "/api/users/1/", 
    type: "PUT", 
    datatype: "json", 
    data: {csrfmiddlewaretoken: csrf_token, "user_gender": 2, "user_details": 23 }, 
.... 

在Chrome控制台

csrfmiddlewaretoken:wUlPIaEmZd2FMA2ob9VRSVKWpOf6EQHn 
user_gender:0 
user_details:111asdfasdfsdf 

我CONSOLE.LOG(csrf_token),它作为我在布劳尔使用的相同。

我跟着Bryan在这里Django CSRF check failing with an Ajax POST request它在其他页面使用POST请求工作。

回答

1

Django文档说,那你可以将CSRF令牌在X-CSRFToken头在你的AJAX请求:https://docs.djangoproject.com/en/dev/ref/csrf/#ajax

+0

我跟布莱恩这里https://stackoverflow.com/questions/5100539/django-csrf -check-with-an-ajax-post-request并且它在使用POST请求的其他页面中工作。 – Windsooon