Golang中的Cookie Max-Age与Expire的区别

7
什么是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
}

1
https://stackoverflow.com/questions/46549195/cookies-date-expires-doesnt-work-when-the-browser-is-closed-the-cookies-are/46549399#46549399 - user4466350
2
使用 MaxAge 并阅读 RFC。 - Volker
1个回答

17
它们实际上是Set-Cookie头的不同字段,而不是特定于Go。
来自Mozilla文档
Expires

表示cookie的最大生命周期,格式为HTTP日期戳。请参见Date了解所需的格式。

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

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

当设置Expires日期时,截止日期是相对于设置该cookie的客户端,而不是服务器。

Max-Age

表示cookie到期的秒数。零或负数将立即使cookie过期。如果同时设置了ExpiresMax-Age,则以Max-Age为准。


感谢你的回答Dylan。现在我明白了。 - SabuhiGurbani
@SabuhiGurbani 如果现在明白了,接受答案会很好。 - Nick N.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接