我正在尝试设置多个 cookie,但它不起作用:
if type(ngx.header["Set-Cookie"]) ~= "table" then
ngx.header["Set-Cookie"] = {}
end
table.insert(ngx.header["Set-Cookie"], "Cookie1=abc; Path=/")
table.insert(ngx.header["Set-Cookie"], "Cookie2=def; Path=/")
table.insert(ngx.header["Set-Cookie"], "Cookie3=ghi; Path=/")
Run Code Online (Sandbox Code Playgroud)
在客户端,我没有收到任何 cookie。
我在几个 Flask 应用程序前面将 NGINX 作为反向代理运行。
我想为注销的用户实现缓存。
Flask-loginSet-Cookie为每个响应添加一个标头,即使对于匿名用户也是如此,因为它包含一个带有 CSRF 令牌的会话 cookie。这意味着我正在使用proxy_ignore_headers Set-Cookie;以确保 NGINX 实际缓存了这些内容(它不会缓存并使用Set-Cookie标头进行响应)。
我在应用程序中设置了一个单独的 cookie 来指示用户的登录/退出状态,并使用它来确定是否使用缓存。这很好用。
问题是注销用户的缓存响应包含Set-Cookie设置会话 cookie的标头。这个会话 cookie 被提供给任何命中缓存的请求,最终导致不同的用户收到相同的 CSRF 令牌。
我想阻止将Set-Cookie标头存储在缓存中,或者在从缓存发送到客户端时删除/覆盖它。
我试过设置proxy_hide_headers Set-Cookie从缓存的响应中删除它,但也从该应用程序的响应中删除它。所以没有人可以登录。这很糟糕。
感觉应该有一个非常简单的解决方案,无论我谷歌多么努力,我都能找到它。
任何帮助表示赞赏。