1

Cookie struct 中的 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
}
4

1 回答 1

3

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

来自Mozilla 文档

过期

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

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

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

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

最大年龄

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

于 2022-01-14T19:58:49.197 回答