【问题标题】:django + varnish caching not being stored due to csrf tokens由于 csrf 令牌,没有存储 django + varnish 缓存
【发布时间】:2012-03-28 10:26:02
【问题描述】:

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

我应该如何解决这个问题?

【问题讨论】:

    标签: django caching csrf varnish


    【解决方案1】:

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

    一种介于两者之间的解决方案是将没有登录表单的页面缓存在 varnish 中,然后使用 Javascript 插入登录表单。主页将被缓存,您应该能够使登录表单(通过 AJAX 拉出)足够快,不会给您带来问题。另一种可能的解决方案是将登录表单放在 IFRAME 中,尽管这会使事情变得更加复杂,因为您必须有一些东西来响应在主页中使用 Javascript 的登录(首先包括 IFRAME ) 以适当地重新加载它。

    【讨论】:

    • 感谢您的回复!我也在考虑使用 esi 来解决这个问题,但我想我可以先试试 js 解决方案。我的登录表单实际上已经在一个灯箱 iframe 中,它是我在 js 模板中的一些表单,这些表单似乎导致设置 crsf 令牌,因此将这些设置为外部应该是一件快速的尝试。再次感谢,我稍后会发布以分享我的进展情况。
    • 更新:问题有两个方面。正在设置 crsf 令牌购买我正在使用的外部应用程序,该应用程序阻止了清漆中的缓存。一旦我发现我发现清漆仍然没有缓存。在#varnish irc 频道中,有人告诉我,当您使用授权标头时,varnish 会跳过检查并且默认情况下从不缓存。
    猜你喜欢
    • 1970-01-01
    • 2011-09-11
    • 2014-10-28
    • 2021-06-29
    • 2011-12-11
    • 1970-01-01
    • 2014-08-05
    • 2019-04-29
    • 1970-01-01
    相关资源
    最近更新 更多