Gin 中的Cookie

433 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

Gin 中的Cookie

cookie 概述

1、HTTP 是无状态协议。简单地说,当你浏览了一个页面,然后转到同一个网站的另一个页面,服务器无法认识到这是同一个浏览器在访问同一个网站。每一次的访问,都是没有任何关系的。如果我们要实现多个页面之间共享数据的话我们就可以使用Cookie 或者Session实现。 2、● cookie 是存储于访问者计算机的浏览器中。可以让我们用同一个浏览器访问同一个域名的时候共享数据。

cookie一般用来做什么?

1、在同一个项目中,更多的是需要保持其登录状态的!,cookie一般就是用来做这个。 2、cookie还会保存记得浏览器浏览记录 3、使用智能推荐算法,猜你喜欢 4、类似的购物车功能

设置和获取 Cookie

设置cookie

c.SetCookie(name, value string, maxAge int, path, domain string, secure bool, httpOnly bool)

1、name:相当于key

2、value

3、maxAge:过期时间。如果不想设置,则为nil

4、path:cookie的路径

5:domain :cookie 的路径 Domain 作用域,如果是本地调试配置成 localhost , 正式上线则配置成域名

6、secure:,当 secure 值为 true 时,cookie 在 HTTP 中是无效,在HTTPS 中才有效

7、httpOnly:是微软对 COOKIE 做的扩展。如果在 COOKIE 中设置了“httpOnly”属性,则通过程序(JS 脚本、applet 等)将无法读取到 COOKIE 信息防止XSS 攻击产生

获取cookie

cookie, err := c.Cookie("name")

在路由中的应用

r.GET("/login", func(c *gin.Context) { 
    c.SetCookie("usrename", "张三", 3600, "/", "localhost", false, true) 
    c.String(200, "登录页")
}) 

r.GET("/user", func(c *gin.Context) {
    username, _ := c.Cookie("usrename")
    c.String(200, "用户-"+username) })

多个二级域名共享 cookie

1、分别把 a.abc.com 和 b.abc.com 解析到我们的服务器

2、我们想的是用户在 a.abc.com 中设置 Cookie 信息后在 b.abc.com 中获取刚才设置的cookie,也就是实现多个二级域名共享 cookie

设置二级域名cookie

c.SetCookie("usrename", "张三", 3600, "/", ".abc.com", false,)

只需把path写模糊就行了