由于csrf令牌而未存储django + varnish缓存

时间:2012-03-11 23:32:57

标签: django caching csrf varnish

我的主页上有登录表单。这导致设置了csrf令牌,这意味着我的页面没有存储在varnish缓存中。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

您有两个主要课程:要么放弃使用清漆来缓存页面,要么放弃在页面上使用登录表单。 CSRF令牌(您不想丢失)将阻止您成功缓存清单中的页面;即使你考虑到这一点,你最终也会得到每个访问者的页面副本,这就违背了使用清漆的目的。

两者之间的解决方案是在没有登录表单的情况下缓存页面,然后使用Javascript插入登录表单。主页面将被缓存,您应该能够以足够快的速度制作登录表单(通过AJAX提取),以免造成问题。另一个可能的解决方案是将登录表单放在IFRAME中,尽管这会使事情变得更复杂,因为您必须在登录的响应中有一些内容在主页中使用Javascript(首先包括IFRAME) )适当地重新加载它。