没有 HTTP_REFERER 的 Django + CloudFront 缓存

Django + CloudFront caching without HTTP_REFERER

我们使用 django 1.8。在具有在 elasticbeanstalk 和 AWS CloudFront 上运行以在 CDN 级别缓存应用程序页面的默认授权的后端。问题是我们希望将尽可能少的 http headers 列入白名单,以最小化密钥数量并最大化命中率。其中一个 headers 变化很大,我们希望排除的是 HTTP_REFERER。在业务层面上,我们可以使用 document.referer 通过 js 解析 referer,然后使用 ajax 调用将其发送到服务器。

问题:csrf 登录、注册和其他默认的 django 身份验证应用程序在 https 协议的网站上使用时需要 HTTP_REFERER。

我找到的解决方案之一是将所有授权页面移动到单独的行为并在那里代理所有 headers。是否有任何其他方法可以进行此类设置?

除了你提到的那个,我认为没有其他解决方案,使用单独的行为。

我通常使用从前端到后端的剩余 api 调用,所以我不需要那里的 Referer header。

然后为 /admin/ 添加额外的行为,其中我 do 转发 Referer.