Gin中的Cookie

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
*/
posted @ 2024-01-17 11:02  春游去动物园  阅读(24)  评论(0编辑  收藏  举报