cookie的获取:
func (c *Context) Cookie(name string) (string, error)
Cookie 返回请求中提供的命名 cookie,如果未找到则返回 ErrNoCookie。并返回命名的 cookie 是未转义的。如果多个 cookie 与给定名称匹配,则只会返回一个 cookie。
func (c *Context) SetCookie(name, value string, maxAge int, path, domain string, secure, httpOnly bool)
SetCookie 将 Set-Cookie 标头添加到 ResponseWriter 的标头中。提供的 cookie 必须具有有效的名称。无效的 cookie 可能会被静默丢弃。
参数:
name:cookie的名称
value:cookie的值
maxAge int:cookie存活时间,单位为秒
path:cookie所在目录
domain string:域名
secure:是否只能通过https访问
httpOnly bool :是否允许别人通过js获取自己的cookie
实例演示:
- package main
-
- import (
- "fmt"
- "github.com/gin-gonic/gin"
- )
-
- func TestHandler(c *gin.Context) {
-
- // 获取客户端是否携带cookie
- if cookie, err := c.Cookie("username"); err != nil {
- fmt.Println("cookie", cookie)
- fmt.Println("err", err)
-
- cookie = "lucas"
- // 给客户端设置cookie
- c.SetCookie("username", cookie, 60*60, "/", "localhost", false, true)
-
- fmt.Printf("cookie的值为:%v\n", cookie)
- c.String(200, "测试cookie")
- }
-
- }
-
- func main() {
- // 1.创建路由
- // 默认使用了2个中间件Logger(), Recovery()
- engine := gin.Default()
-
- engine.GET("/cookie", TestHandler)
- engine.Run(":8888")
- }
-
- cookie
- err http: named cookie not present
- cookie的值为:lucas
- [GIN] 2023/09/12 - 18:29:13 | 200 | 924.4µs | ::1 | GET "/cookie"
查看cookie

