使用 Django 1.4,我不断地将 CSRF cookie 间歇性地打乱成这样的东西:
"Set-Cookie: csrftoken=\"Set-Cookie: csrftoken=WStoUW0COc1JvURmsc0vwRgJ8uCWR5Hh\073 expires=Mon\054 26-Aug-2013 15:24:38 GMT\073 Max-Age=31449600\073 Path=/\""
(而不是说WStoUW0COc1JvURmsc0vwRgJ8uCWR5Hh
,这是那个 CSRF cookie 的实际值。)
在任何对象上多次重新加载“添加/编辑”页面后,我似乎会发生这种情况(我没有对它们进行全部测试,但我在自定义模型和 Django.auth 的用户上得到了它)。在那之后,即使我删除它,我几乎总是会在下次刷新时再次获得它。
cookie 的内容很容易让人联想到这个错误,但是
- 不完全一样,缺少转义
- 应该已经修复并且
- Django admin 中的这个页面无论如何都不会被缓存(添加/编辑页面默认使用 admin_view 装饰器)
我曾经认为DajaxICE与此有关,但它只是将问题暴露出来,因为它在cookie设置错误后会失败。如上所述,这发生在没有也从未有过 DajaxICE 东西的管理页面上。
更新:这看起来更像这两个 线程中讨论的内容,但即使是那些谈到需要使用 TemplateResponse 的视图(检查 Django Admin 的添加视图),具有 csrf 保护(检查),并使用 cache_page (或者我假设至少某种形式的缓存——添加视图绝对不会)。
看到使用 django_annoying 的 ajax_request 显然不关心这个 cookie 是乱码(而 Django 管理员从来没有这样做过),我可以继续而不修复这个,但是......什么?!据我所知,打破这一点所需要的只是使用站点范围的缓存和管理站点,这有点荒谬......更不用说 Django 管理员不介意存在乱码 cookie 的事实。 .