gpt4 book ai didi

即使包含 csrf token ,Django CSRF 验证也失败

转载 作者:行者123 更新时间:2023-12-03 20:19:37 32 4
gpt4 key购买 nike

我知道当提交时表单中未包含 csrf token 时会发生此错误,但这次并非如此。

我正在尝试登录管理站点。管理员登录表单包含 csrf token ,我可以看到该 csrf token 的值与 csrf cookie 的值匹配。此外,当我提交时,我可以看到相同的 csrf token 已发布到服务器。

但是,我还是得到了 CSRF verification failed信息。我确定清除 cookie 会起作用,但我不明白为什么会发生这种情况?

关于我的 session 引擎设置需要注意的一件事:

SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'

我不知道这个设置是否重要,但我应该指出。

更新:好的,我打开了调试,这里有更多信息:
Reason given for failure:

CSRF cookie not set.

一般来说,当存在真正的跨站请求伪造,或者没有正确使用 Django 的 CSRF 机制时,就会出现这种情况。对于 POST 表单,您需要确保:

Your browser is accepting cookies.



我很确定我的浏览器接受 cookie。因为我可以在浏览器中看到 cookie 值,所以我也可以看到在 http header 中设置的 cookie:
Set-Cookie:csrftoken=j2tSkjxUyeY90NZhUcMZ5GEdDKEa0wdW; expires=Fri, 12-May-2017 07:28:00 GMT; Max-Age=31449600; Path=/

The view function passes a request to the template's render method. In the template, there is a {% csrf_token %} template tag inside each POST form that targets an internal URL.



由于我使用的是 Django 自己的管理页面,我确定 there is a {% csrf_token %} template tag inside each POST form that targets an internal URL.
另外,我可以看到 post 操作发生时, csrf 值被传递:
csrfmiddlewaretoken=j2tSkjxUyeY90NZhUcMZ5GEdDKEa0wdW&username=cheng&password=&next=%2Fadmin%2F

出于显而易见的原因,我删除了密码字段的值。

If you are not using CsrfViewMiddleware, then you must use csrf_protect on any views that use the csrf_token template tag, as well as those that accept the POST data.



嗯,我有 CsrfViewMIddleWare在我的 settings.py 文件中。此外,Django 自己的管理站点知道如何处理 csrf_token。

我以前见过这个错误,我通过清除 cookie 解决了它。但对于不了解 cookie 的普通用户来说,这可能是个障碍。我怀疑它与 cookie-engine 设置有关。

最佳答案

这个问题可能是由于您对表单的更改,即添加 {% crsf_token %} 没有生效。刷新您的 FORM PAGE,然后再次提供输入。可能工作正常。

关于即使包含 csrf token ,Django CSRF 验证也失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37200908/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com