【问题标题】:Specify expiration date when setting cookies设置 cookie 时指定过期日期
【发布时间】:2017-02-19 11:39:35
【问题描述】:

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

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

我知道我必须添加如下内容:

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

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

非常感谢您。

-天使

【问题讨论】:

    标签: varnish varnish-vcl fastly


    【解决方案1】:

    如果您使用 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"; }

    【讨论】:

      【解决方案2】:

      更新 - 工作解决方案:

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

      add resp.http.Set-Cookie = "language=" + req.http.X-Language + ";expires="+ time.add(now,1d) +"; path=/";
      

      【讨论】:

      • 这似乎是 Fastly 唯一的语法。
      • @David 没有测试就很难说。如果它无效,Fastly 应该在部署之前给你一个错误。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-23
      • 2017-02-20
      • 2019-03-07
      相关资源
      最近更新 更多