2014-09-18 50 views
1

csrfotken我有在我使用的是csrfmiddlewaretoken在Django作爲一個簡單的形式:不同csrfmiddlewaretoken在形式和餅乾

<form> 
{% csrf_token %} 
</form> 

在頁面加載無論在形式csrfmiddlewaretoken和餅乾csrftoken是相同的,但在我使用ctrl + F5刷新頁面,cookie中的csrftoken更改,但表單中的csrfmiddlewaretoken保持不變,這導致未來的POST AJAX請求失敗。

這可能是什麼原因?

回答

0
  • 您使用的是緩存嗎?
  • 您是否嘗試將@csrf_protect裝飾器添加到負責生成HTML的方法中?
  • 你在視圖中使用csrf標記進行任何手動操作嗎?

你的意見和形式的一些代碼片段將是有用的,這是瘋狂的猜測沒有他們。

0

我認爲你的Django版本是1.10或1.11,因爲在1.9之後,在csrf中有一些消息。

爲了防止BREACH攻擊,CSRF保護機制現在會在每個請求上更改表單令牌值(同時保留一個可用於驗證不同令牌的不變祕密)。

doc link