根据欧洲有关Cookie的规定,我们需要显示一条消息,让用户知道我们使用Cookie。
当他们接受时,我们设置了一个cookie!除了严重依赖跟踪cookie之外,我们还需要这个cookie :(
我已经设置了Varnish来缓存资产和我的目标网页,这自然会对速度产生巨大影响。资产正在实现梦想,主页永远不会从服务器接收Set-Cookie,因为这就是Varnish开箱即用的方式。
我们的清漆服务器是Centos 7,它安装了Varnish 4.我们的目标是最终转移到Fastly,他们有一个指南来完成我想要做的事情,这允许我们使用Cookie并避免缓存它们。
https://www.fastly.com/blog/how-to-cache-with-tracking-cookies
然而,req变量不再在Varnish 4中的vcl_deliver
范围内。
有没有人能够找到解决方法呢?
答案 0 :(得分:1)
你应该只能存储" Tmp-Cookie"在 beresp 而不是 bereq 中,在这种情况下,它会在 vcl_deliver 中传播到 resp 。然后,您可以将其复制到 Set-Cookie 。
快速建议的修改版本:
sub vcl_backend_response {
if (beresp.http.Set-Cookie) {
# ... so store it temporarily
set bereq.http.Tmp-Set-Cookie = beresp.http.Set-Cookie;
# ... and then unset it
unset beresp.http.Set-Cookie;
}
}
sub vcl_deliver {
if (resp.http.Tmp-Set-Cookie) {
set resp.http.Set-Cookie = resp.http.Tmp-Set-Cookie;
unset resp.http.Tmp-Set-Cookie;
}
}
这应该与响应处理等效,但您仍然希望最有可能处理传入的请求cookie(如果相关)。