Django 的 CsrfViewMiddleware 设置了“Vary: Cookie” header ,这意味着缓存系统不仅会考虑页面 URL,还会考虑每个用户唯一的用户 Cookie。
所以页面不会为所有用户缓存一次,而是为每个用户缓存一次。就我而言,我的网站负载非常大,这种行为并不让我满意。
最佳答案
是的,你对这个问题有正确的看法。当您对 View 使用 Django 的 CSRF 保护时,不仅每个用户的 cookie 都是唯一的,而且页面内容也是唯一的,因为每个受 CSRF 保护的表单都有一个隐藏字段 csrftoken。
您可以通过将 csrftoken 字段的值设置为将客户端的 cookie 与 JavaScript 匹配来解决此问题,但这不是 Django 开箱即用的。
但是,您必须确保:
有几种机会可以让您自己动手并使您的网站容易受到 CSRF 攻击。
关于Django CSRF 保护强制设置 "Vary: Cookie" header ,导致缓存效率低下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31959084/