禁止403:Firefox中的CSRF验证失败错误,而不是chrome

时间:2018-05-21 22:29:01

标签: django django-templates csrf csrf-protection django-csrf

我有一个包含多个表单的网页。我在每个表单中都包含了{%csrf_token%}。

<form class="form-horizontal clearfix" role="form" id="Form1" method="post"> {% csrf_token %}

在我看来,我使用了bot ensure_csrf_cookie和csrf_protect装饰器

@ensure_csrf_cookie
@csrf_protect
@operation('monitor')
def monitor(request, **kwargs):

第一个POST请求从后端获取一些细节并将其显示在UI中。之后,从用户请求一些数据,然后提交第二个表单。

在firefox中:当我第一次加载页面时,在第一篇文章之后,csrftoken是X.对于第二个post请求,csrftoken cookie也是相同的。但是一旦抛出错误,csrf cookie就会变为不同的值。如果我在此之后刷新页面,则csrftoken保持不变,如果我再次发布请求,则成功。我还验证了表单有隐藏值csrfmiddlewaretoken。这与cookie匹配。加载页面时,我没有看到任何404 for favicon。这是以前的事。但我解决了这个问题,并且chrome开始工作了。

在Chrome中:这是有效的。

关于如何解决这个问题的任何指示?

1 个答案:

答案 0 :(得分:0)

找不到favicon.ico错误。我在base.html中添加了这个。

<link rel="shortcut icon" type="image/png" href="{% static "tools/ico/favicon.ico" %}"/>

参考:https://code.djangoproject.com/ticket/28488#comment:22