形式不同的csrfmiddlewaretoken和cookie中的csrfotken

时间:2014-09-18 19:06:31

标签: jquery html django csrf django-csrf

我有一个简单的表单,我在django中使用csrfmiddlewaretoken:

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

在页面加载时,表单中的csrfmiddlewaretoken和cookie中的csrftoken都相同,但是当我使用ctrl + F5刷新页面时,cookie中的csrftoken会发生变化,但表单中的csrfmiddlewaretoken保持不变,这会导致将来的POST AJAX请求失败。

这可能是什么原因?

2 个答案:

答案 0 :(得分:0)

  • 你在使用缓存吗?
  • 您是否尝试将@csrf_protect装饰器添加到负责生成HTML的方法中?
  • 您是否在视图中使用csrf令牌进行任何手动操作?

您的观点和表单的某些代码段会很有用,如果没有它们就会疯狂猜测。

答案 1 :(得分:0)

我认为你的Django版本是1.10或1.11,因为在1.9之后,csrf中有一些新闻。

  

为了防止BREACH攻击,CSRF保护机制现在更改每个请求上的表单标记值(同时保留可用于验证不同标记的不变秘密)。

doc link