我有一个网站和 CSRF 有点疯狂/令人愤怒的错误。
我们在 Ubuntu 上使用 Apache2 + mod_wsgi 运行 Django 1.2.3、Python 2.6,并让最终用户报告 403 CRSF 验证失败和 403s 结果。
我们所有的表格都有一个csrf_token
和 - 据我所知 - 在本地开发人员和舞台上(我们还没有投入生产)......除了一个办公室(客户的,natch)。在随机情况下,他们会得到这样的 403,但随后刷新它就会消失(所以它不是缺少令牌的 HTML 等)
我正在考虑原因和解决方案,可能是那个办公室有一个非常急切或设置不当的代理缓存,或类似的,并且希望以 Django/Apache 的方式提供一些关于我们可以做什么的提示处理顶级代理(客户办公室可能不会更改他们的设置)或其他可能导致这些 CSRF 失败的原因。
顺便说一句:这是一个从头开始的 1.2.3 项目,而不是某种 1.1 升级,我们只使用单个标准/正确的 1.2.3 CSRFMiddleware 并手动添加 csrf_tokens - 而不是 CSRFResponseMiddleware 自动包含 csrf_token
另外:这发生在两个单独的服务器(开发服务器和登台服务器)上,它们托管在不同的位置。共同因素是(理论上)相同的 Django/Apache/mod_wsgi 设置、相同的代码库和相同的办公室获得 403(并且无法在我们自己的位置复制 403)。