Copyright © 2022-2025 aizws.net · 网站版本: v1.2.6·内部版本: v1.25.2·
页面加载耗时 0.00 毫秒·物理内存 135.0MB ·虚拟内存 1372.6MB
欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
在 Go Echo框架中,我们可以通过 net/http 包的 Cookie 结构体初始化一个 cookie,然后通过 echo.Context 上下文对象的 SetCookie 函数往请求结果设置 cookie。
cookie通常用于在浏览器中保存一些小数据,例如客户标识、用户非铭感数据。注意别使用 cookie 保存隐私数据。
往客户设置一个 cookie 需要两个步骤:
范例如下:
// Handler
func(c echo.Context) (err error) {
// 初始化cookie对象
cookie := new(http.Cookie)
cookie.Name = "tizi-domain"
cookie.Value = "tizi365.com"
cookie.Path = "/"
// cookie有效期为3600秒
cookie.MaxAge = 3600
// 设置cookie
c.SetCookie(cookie)
return c.String(http.StatusOK, "cookie操作")
}
系统结构体 http.Cookie 的定义如下:
type Cookie struct {
Name string //cookie名字
Value string //cookie的值
Path string // [可选字段] cookie路径
Domain string // [可选字段] cookie作用域
Expires time.Time // [可选字段] cookie什么时候失效,需要设置一个具体的失效时间跟MaxAge字段二选一即可,
// MaxAge=0 忽略MaxAge属性.
// MaxAge<0 相当于删除cookie, 通常可以设置-1代表删除
// MaxAge>0 多少秒后cookie失效
MaxAge int // [可选字段] cookie有效期,单位是秒
Secure bool // [可选字段] cookie secure属性
HttpOnly bool // [可选字段] cookie http only属性
}
读取 cookie 主要通过 echo.Context 上下文对象的 Cookie 函数进行操作。
范例如下:
// Handler
func(c echo.Context) (err error) {
// 根据cookie名,获取cookie, cookie存在则返回http.Cookie结构体
cookie, err := c.Cookie("tizi-domain")
if err != nil {
return err
}
// 打印cookie名
fmt.Println(cookie.Name)
// 打印cookie值
fmt.Println(cookie.Value)
return c.String(http.StatusOK, "cookie操作")
}
下面介绍如何一次性查询所有 cookie:
// Handler
func(c echo.Context) (err error) {
// 通过c.Cookies函数,查询所有cookie
// 这里通过循环语句打印所有cookie的名字和值
for _, cookie := range c.Cookies() {
fmt.Println(cookie.Name)
fmt.Println(cookie.Value)
}
return c.String(http.StatusOK, "cookie操作")
}
删除 cookie,本质上是通过设置 cookie 的过期时间,让 cookie 立刻失效。
范例如下:
// Handler
func(c echo.Context) (err error) {
// 初始化cookie对象
cookie := new(http.Cookie)
// 删除cookie只需要设置cookie名字就可以
cookie.Name = "tizi-domain"
// cookie有效期为-1秒,注意这里不能设置为0,否则不会删除cookie
cookie.MaxAge = -1
// 设置cookie
c.SetCookie(cookie)
return c.String(http.StatusOK, "cookie操作")
}
Go Echo框架的 session 处理是通过中间件实现的。session 是 web 框架中重要的组成部分。比如:我们处理用户登录时,就需要相关的 session 处理机制。使用session的关键步骤:导入依赖包、设置session中间件、读写session数据。