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
}
它们实际上是Set-Cookie
标头的不同字段,并不是Go特有的。
来自Mozilla文档:
到期
将cookie的最长生存期表示为HTTP日期时间戳。有关所需格式,请参见
Date
。
如果未指定,cookie将成为会话cookie。当客户端关闭时,会话结束,然后删除会话cookie。
警告:许多web浏览器都具有会话恢复功能,可以保存所有选项卡,并在下次使用浏览器时进行恢复。会话cookie也将被恢复,就好像浏览器从未关闭过一样。
设置
Expires
日期时,截止日期是相对于设置cookie的客户端,而不是服务器。
最大年龄
指示cookie过期前的秒数。零或负数将使cookie立即过期。如果同时设置了
Expires
和Max-Age
,则Max-Age
具有优先级。