• 首页
  • 发布文章
  • 我的文章
  • 我的收藏
  • 设置
  • 退出

Go Gin 设置Cookie以及Cookie的参数详解

blmius 2021-10-13 15:28:02
收藏
编辑
上架
下架

Go Gin 设置Cookie以及Cookie的参数详解

参数详解

参数 类型 含义
Name string cookie的名称
Value string cookie的值;value值中不允许有空格符的存在,建议在设置时处理下
Path string Cookie的使用路径。如果设置为“/sessionWeb/”,则只有contextPath为“/sessionWeb”的程序可以访问该Cookie。如果设置为“/”,则本域名下contextPath都可以访问该Cookie。注意最后一个字符必须为“/”。
Domain string 可以访问该Cookie的域名。如果设置为“.google.com”,则所有以“google.com”结尾的域名都可以访问该Cookie。注意第一个字符必须为“.”
Expires time.Time Expires是cookie的过期时间,如果不设置,那么这是一个session型的cookie,即浏览器会话有用,一旦关闭浏览器,cookie随即会被删除;Expires指定的时间可以是相对文件的最后访问时间(Atime)或者修改时间(MTime);比如2018/10/10 10:10:10
RawExpires string 仅用于阅读cookies
MaxAge int 被访问后的存活时间;这个时间是个相对值(比如:3600s);MaxAge=0,未指定该属性;MaxAge<0时,删除cookie,相当于“Max Age:0”
0Secure bool 是否需要安全传输,为true时只有https才会传输该cookie
HttpOnly bool 为true时,不能通过js读取该cookie的值
Raw string
Unparsed []string 未解析的 attribute-value 属性位对

实现

默认设置name=“xj”;value=“cxj” 的cookie

  • 路由

    //设置cookie   
    router.GET("/common/cookies/gin/set", service.CookieSetService)
    //获取cookie   
    router.GET("/common/cookies/gin/get", service.CookieGetService)
    //删除cookie
    router.GET("/common/cookies/gin/clear", service.CookieClearService)
    
    
  • service

    //设置cookie
    func CookieSetService(c *gin.Context) {
    // 删除用户名Cookie
     cookieName := &http.Cookie{
         Name:     "xj",
         Value:    "cxj",
         Path:     "/",
         Secure:   false,
         HttpOnly: true,
     }
     http.SetCookie(c.Writer, cookieName)
    }
    //获取cookie
    func CookieGetService(c *gin.Context) {
        cookieKey:="xj"
     if cookie, err := c.Request.Cookie(cookieKey); err == nil {
         return cookie.Value
     } else {
         return ""
     }
    }
    //删除cookie
    func CookieClearService(c *gin.Context) {
     clearCookieName := &http.Cookie{
         Name:     "xj",
         Value:    "",
         Path:     "/",
             MaxAge:-1,//<0 意味着删除cookie
         Secure:   false,
         HttpOnly: true,
     }
     http.SetCookie(c.Writer, clearCookieName)
    }
    
    

本文转自 https://www.jianshu.com/p/16adf7968dcd,如有侵权,请联系删除。