Gin中的Cookie
1 Cookie简介
/*
	●  HTTP是无状态协议。简单地说,当你浏览了一个页面,然后转到同一个网站的另一个页面,服务器无法认识到这是同一个浏览器在访问同一个网站。每一次的访问,都是没有任何关系的。如果我们要实现多个页面之间共享数据的话我们就可以使用Cookie或者Session实现
	● cookie是存储于访问者计算机的浏览器中。可以让我们用同一个浏览器访问同一个域名的时候共享数据。
*/
2 Cookie能实现的功能
/*
    1、保持用户登录状态
    2、保存用户浏览的历史记录
    3、猜你喜欢,智能推荐
    4、电商网站的加入购物车
*/
3 设置和获取Cookie
import (
    "fmt"
    "github.com/gin-gonic/gin"
)
func main() {
    router := gin.Default()
    router.GET("/cookie", func(c *gin.Context) {
        cookie, err := c.Cookie("gin_cookie") // 获取cookie
        if err != nil {
            cookie = "NotSet"
            c.SetCookie("gin_cookie", "test", 3600, "/", "localhost", false, true) // 设置cookie
        }
        fmt.Printf("Cookie value: %s \n", cookie)
    })
    router.Run()
}
/*
	c.SetCookie(name, value string, maxAge int, path, domain string, secure, httpOnly bool)
	name : cookie名称
	value : cookie值
	maxAge : 过期时间(秒)如果只想设置Cookie的保存路径而不想设置存活时间,可以在第三个参数中传递nil
	path : cookie生效的路径
	domain : cookie的路径Domain作用域 本地调试配置成localhost,正式上线配置成域名,不写的话就是所有域都可以
	secure : 当secure值为true时,cookie在HTTP中是无效的,在HTTPS中才有效
	httpOnly : 是微软对COOKIE做的扩展。如果在COOKIE中设置了“httpOnly"属性,则通过程序(JS脚本、applet等)将无法读取到COOKIE信息,防止XSS攻击产生
*/
4 删除Cookie
只需要重新设置过期时间 让它小于0就行了
c.SetCookie("gin_cookie", "test", -1, "/", "localhost", false, true) 
5 多个二级域名共享cookie
/*
	1.讲二级域名解析
	 a.xxx.com
	 b.xxx.com
    2、我们想的是用户在a.xxx.com中设置Cookie信息后在 b.xxx.com中获取刚才设置的cookie,也就是实现多个二级域名共享cookie
    这时候的话我们就可以这样设置cookie
    
    c.SetCookie("usrename","张三",3600,"/",".xxx.com", false,true)
	.xxx.com 让所有属于它的二级域名共享cookie
*/