1

我想在 VCL 中设置 cookie 时指定过期日期。我目前有这样的事情:

add resp.http.Set-Cookie = "language=" + req.http.X-Language + "; path=/";

我知道我将不得不添加如下内容:

Expires=Thu, 01 Jan 1970 00:00:00 GMT

Varnish 中是否有一个内置函数可以让我动态地将到期日期设置为将来的任何内容?我一直在看他们的文档,但到目前为止还没有运气。

非常感谢您提前。

-天使

4

2 回答 2

2

更新 - 工作解决方案:

不确定此语法是否特定于 Fastly,但我使用 : 让它time.add(now,1d)工作

add resp.http.Set-Cookie = "language=" + req.http.X-Language + ";expires="+ time.add(now,1d) +"; path=/";
于 2016-10-11T16:50:21.743 回答
0

如果你使用 Varnish 4,你应该使用 Cookie VMOD。来自文档:https ://github.com/varnish/varnish-modules/blob/master/docs/vmod_cookie.rst

格式_rfc1123

STRING format_rfc1123(TIME now, DURATION timedelta)
描述
获取适合包含在 Set-Cookie 响应标头中的 RFC1123 格式的日期字符串。

如果响应具有多个 Set-Cookie 标头,则应小心。在这种情况下,应该使用头文件 vmod。

例子
子 vcl_deliver {
        # 在客户端设置一个userid cookie,存活5分钟。
        set resp.http.Set-Cookie = "userid=" + req.http.userid + "; Expires=" + cookie.format_rfc1123(now, 5m) + "; httpOnly";
}
于 2016-10-11T16:00:49.087 回答