我有几个Flask应用程序在NGINX反向代理前运行。
我想为未登录的用户实现缓存。
即使对于匿名用户,Flask-login也会添加一个Set-Cookie标头,因为它包含带有CSRF令牌的会话cookie。这意味着我使用proxy_ignore_headers Set-Cookie;确保NGINX缓存实际上被缓存(它不会缓存并响应带有Set-Cookie标头的响应)。
我在应用程序中设置了一个单独的cookie来指示用户的登录/注销状态,并使用该cookie来确定是否使用缓存。这很好用。
问题是,已缓存的未登录用户响应包括设置会话cookie的Set-Cookie标头。该会话cookie提供给击中缓存的任何请求,最终导致不同的用户接收相同的CSRF令牌。
我想要防止Set-Cookie标头被存储在缓存中,或者在从缓存发送到客户端时删除/覆盖它。
我尝试了设置proxy_hide_headers Set-Cookie,它从缓存的响应中删除了它,但也从该应用程序的响应中删除了它。所以没有人可以登录。这很糟糕。
感觉应该有一种非常简单的解决方案,但无论我如何搜索都找不到。
感谢任何帮助。
我想为未登录的用户实现缓存。
即使对于匿名用户,Flask-login也会添加一个Set-Cookie标头,因为它包含带有CSRF令牌的会话cookie。这意味着我使用proxy_ignore_headers Set-Cookie;确保NGINX缓存实际上被缓存(它不会缓存并响应带有Set-Cookie标头的响应)。
我在应用程序中设置了一个单独的cookie来指示用户的登录/注销状态,并使用该cookie来确定是否使用缓存。这很好用。
问题是,已缓存的未登录用户响应包括设置会话cookie的Set-Cookie标头。该会话cookie提供给击中缓存的任何请求,最终导致不同的用户接收相同的CSRF令牌。
我想要防止Set-Cookie标头被存储在缓存中,或者在从缓存发送到客户端时删除/覆盖它。
我尝试了设置proxy_hide_headers Set-Cookie,它从缓存的响应中删除了它,但也从该应用程序的响应中删除了它。所以没有人可以登录。这很糟糕。
感觉应该有一种非常简单的解决方案,但无论我如何搜索都找不到。
感谢任何帮助。