Golang Cookie Max-Age 与 Expire

Sab*_*ani 8 cookies http go expires-header max-age

Cookie 结构中的 Expires 和 Max-Age 有什么区别?我无法理解。

type Cookie struct {
    Name  string
    Value string

    Path       string    // optional
    Domain     string    // optional
    Expires    time.Time // optional
    RawExpires string    // for reading cookies only

    // MaxAge=0 means no 'Max-Age' attribute specified.
    // MaxAge<0 means delete cookie now, equivalently 'Max-Age: 0'
    // MaxAge>0 means Max-Age attribute present and given in seconds
    MaxAge   int
    Secure   bool
    HttpOnly bool
    SameSite SameSite
    Raw      string
    Unparsed []string // Raw text of unparsed attribute-value pairs
}
Run Code Online (Sandbox Code Playgroud)

Dyl*_*ink 18

它们实际上是标头的不同字段Set-Cookie,不是 Go 特有的。

来自Mozilla 文档

过期

将 cookie 的最大生命周期指示为 HTTP 日期时间戳。请Date参阅 所需的格式。

如果未指定,则 cookie 将成为会话 cookie。当客户端关闭时,会话结束,之后会话 cookie 将被删除。

警告:许多网络浏览器都有会话恢复功能,可以保存所有选项卡并在下次使用浏览器时恢复它们。会话 cookie 也将被恢复,就好像浏览器从未关闭过一样。

设置日期后Expires,截止日期与设置 cookie 的客户端相关,而不是与服务器相关。

最大年龄

表示 cookie 过期之前的秒数。零或负数将使 cookie 立即过期。如果 和ExpiresMax-Age设置了,Max-Age则优先。