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,如有侵权,请联系删除。