gin操作cookie

作者: adm 分类: go 发布时间: 2022-05-10

每次访问网页都会携带cookie,默认肯定会携带Cookie: gin_cookie=test

//如果客户端没有cookie,则第一次访问,没有cookie,即err非nil
//然后创建一个cookie给客户端 (响应cookie),下次访问携带
cookie, err := context.Cookie("www")
if err != nil {
      //创建cookie        
      cookie = "NotSet"
      context.SetCookie("www", "123", 3600, "/", "localhost", false, true)
}

setCookie底层探究

http.SetCookie(c.Writer, &http.Cookie{
        Name:     name,
        Value:    url.QueryEscape(value),
       // MaxAge=0表示未设置Max-Age属性
        // MaxAge<0表示立刻删除该cookie,等价于"Max-Age: 0"
        // MaxAge>0表示存在Max-Age属性,单位是秒  存到磁盘中,开机关机不影响
        MaxAge:   maxAge,
          //只允许某路径下可以访问
        Path:     path,
          //cookie跨域
          /*当自己域名是 顶级域名:hello.com
                     二级域名:hi.hello.com
                     三级域名:big.hi.hello.com
        对应设置的domain首先不能高过自己的(不能说二级或三级等),也就是说 如自己是hello.com,设置Domain不能低过自己,不然无法获得cookie;另外访问的域名不能低于设置的domain*/
        Domain:   domain,
       
        Secure:   secure,   //否需要安全传输,为true时只有https才会传输该cookie
        HttpOnly: httpOnly,  //为true时,不能通过js读取该cookie的值
    })

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!