2

使用 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 的内容很容易让人联想到这个错误,但是

  1. 不完全一样,缺少转义
  2. 应该已经修复并且
  3. Django admin 中的这个页面无论如何都不会被缓存(添加/编辑页面默认使用 admin_view 装饰器)

我曾经认为DajaxICE与此有关,但它只是将问题暴露出来,因为它在cookie设置错误后会失败。如上所述,这发生在没有也从未有过 DajaxICE 东西的管理页面上。

更新:这看起来更像这两个 线程中讨论的内容,但即使是那些谈到需要使用 TemplateResponse 的视图(检查 Django Admin 的添加视图),具有 csrf 保护(检查),并使用 cache_page (或者我假设至少某种形式的缓存——添加视图绝对不会)。

看到使用 django_annoying 的 ajax_request 显然不关心这个 cookie 是乱码(而 Django 管理员从来没有这样做过),我可以继续而不修复这个,但是......什么?!据我所知,打破这一点所需要的只是使用站点范围的缓存和管理站点,这有点荒谬......更不用说 Django 管理员不介意存在乱码 cookie 的事实。 .

4

0 回答 0