我有一个简单的表单,我在django中使用csrfmiddlewaretoken:
<form>
{% csrf_token %}
</form>
在页面加载时,表单中的csrfmiddlewaretoken和cookie中的csrftoken都相同,但是当我使用ctrl + F5刷新页面时,cookie中的csrftoken会发生变化,但表单中的csrfmiddlewaretoken保持不变,这会导致将来的POST AJAX请求失败。
这可能是什么原因?
答案 0 :(得分:0)
@csrf_protect
装饰器添加到负责生成HTML的方法中? 您的观点和表单的某些代码段会很有用,如果没有它们就会疯狂猜测。
答案 1 :(得分:0)
我认为你的Django版本是1.10或1.11,因为在1.9之后,csrf中有一些新闻。
为了防止BREACH攻击,CSRF保护机制现在更改每个请求上的表单标记值(同时保留可用于验证不同标记的不变秘密)。