在beresp中为set-cookie标头添加值。在清漆2.1

时间:2014-11-21 19:33:56

标签: header append varnish setcookie

案例是我想在处理来自后端服务器的响应时添加两个具有相同名称但标题不同的标头。更确切地说,在某些情况下,我希望将另一个Set-Cookie标头附加(不设置)到我的Apache服务器的原始响应中,最终将两个cookie返回给客户端。似乎"设置" action会覆盖相同标题的所有匹配项。

这可能吗?

2 个答案:

答案 0 :(得分:0)

您可以使用regsub()或regsuball()来处理HTTP标头。

https://www.varnish-cache.org/docs/2.1/reference/vcl.html

编辑: 在我的头顶,它应该看起来类似于以下

set beresp.http.Set-Cookie = regsub(beresp.http.Set-Cookie, "^(.+)$", "\1; secure; httponly");

答案 1 :(得分:0)

VCL没有明确的字符串连接运算符。但是,您可以通过将值设置为变量来连接值:

set req.http._message = "one string", " a second string"

然后可以将其分配给其他值或使用。

在您的特定情况下,您应该可以执行以下操作:

if (some-condition) {
    set beresp.http.Set-Cookie = beresp.http.Set-Cookie, "my second cookie";
}