【发布时间】:2021-08-02 20:27:58
【问题描述】:
我运行的 Django 网站在过去几个月没有进行任何更新,但突然间我收到了一堆来自用户的电子邮件,说他们收到以下错误:
CSRF Failed: CSRF cookie not set.
奇怪的是刷新页面并不能解决问题。解决此问题的唯一方法是让他们手动清除浏览器的 cookie。
请记住,他们在刷新后仍处于登录状态。因此,即使他们没有获得 CSRF cookie,Django 也会确认他们的会话。
虽然我很高兴他们可以清除 cookie 来修复它,但这让我很担心,因为我无法理解正在发生的事情。它大约在 iOS 14.5 发布的同时开始发生,所以我最初认为它可能与此有关,但我刚刚收到了 Android 用户的报告。
以前有人遇到过这种情况吗?有没有什么办法可以解决这个问题,而无需在网站上放置横幅说明如果您看到错误则清除 cookie?
谢谢!
【问题讨论】:
-
不是一个实际的解决方案,但是如果出现 CSRF 错误,您的 Django 应用程序也可以自动清除它们的 cookie,直到您弄清楚为什么会发生这种情况,因此用户体验会好一点并且不涉及手动步骤。
-
你使用的是哪个版本的 Django?
-
你使用
cache_page装饰器缓存页面吗? -
您能先发制人地检查错误并自动注销该用户吗?强制他们重新登录会重置损坏的 cookie?
-
有点远景,但我想我也遇到过类似的事情。我最终跑了。
python manage.py clearsessions清除了数据库中的 django-session 表并解决了问题。
标签: django csrf django-csrf