2016-03-06 114 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