cookie在Go语言里面用Cookie
结构表示,这个结构的定义如代码清单4-12所示。
代码清单4-12 Cookie
结构的定义
type Cookie struct {
Name string
Value string
Path string
Domain string
Expires time.Time
RawExpires string
MaxAge int
Secure bool
HttpOnly bool
Raw string
Unparsed []string
}
- 没有设置
Expires
字段的cookie通常称为会话cookie或者临时cookie,这种cookie在浏览器关闭的时候就会自动被移除。 - 设置了
Expires
字段的cookie通常称为持久cookie,这种cookie会一直存在,直到指定的过期时间来临或者被手动删除为止。
Expires
字段和MaxAge
字段都可以用于设置cookie的过期时间,
Expires
字段用于明确地指定cookie应该在什么时候过期- MaxAge字段则指明了cookie在被浏览器创建出来之后能够存活多少秒。
之所以会出现这两种截然不同的过期时间设置方式,是因为不同浏览器使用了各不相同的cookie实现机制,跟Go语言本身的设计无关。虽然HTTP 1.1中废弃了Expires
,推荐使用MaxAge
来代替Expires
,但几乎所有浏览器都仍然支持Expires
;而且,微软的IE 6、IE 7和IE 8都不支持MaxAge
。为了让cookie在所有浏览器上都能够正常地运作,一个实际的方法是只使用Expires
,或者同时使用Expires
和MaxAge
。