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

Posted

技术标签:

【中文标题】禁止 403:Firefox 中的 CSRF 验证失败错误,而不是 chrome【英文标题】:Forbidden 403 : CSRF Validation failed error in Firefox, not in chrome 【发布时间】:2018-10-31 14:43:15 【问题描述】:

我的网页包含超过 1 个带有 POST 的表单。我在每个表单中都包含了 % 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。对于第二次发布请求,csrftoken cookie 也是相同的。但是一旦抛出错误,csrf cookie 就会更改为不同的值。如果我在那之后刷新页面,csrftoken 保持不变,如果我再次发布请求,它就会成功。我还验证了表单具有隐藏值 csrfmiddlewaretoken。这与 cookie 匹配。加载页面时,我没有看到任何 404 图标。这是以前存在的。但我解决了这个问题,chrome 开始工作了。

在 chrome 中:这是有效的。

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

【问题讨论】:

这是 favicon.ico 未找到错误。我在我的 base.html 中添加了这个。 ` ` 参考:code.djangoproject.com/ticket/28488#comment:22 【参考方案1】:

这是 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

【讨论】:

以上是关于禁止 403:Firefox 中的 CSRF 验证失败错误,而不是 chrome的主要内容,如果未能解决你的问题,请参考以下文章

Django - 403 禁止 CSRF 验证失败

Django项目报错: 禁止访问(403),CSRF验证失败,相应中断

Django - 403 禁止。 CSRF 令牌丢失或不正确

Ajax CSRF 403 禁止代码点火器

为啥 Django 管理员登录给我 403 CSRF 错误?

Node Express 和 csurf - 403(禁止)无效 csrf 令牌