08.Cookie
# 01.Cookie 介绍
# 1.1 cookie介绍
HTTP 是无状态协议。
简单地说,当你浏览了一个页面,然后转到同一个网站的另一个页面
服务器无法认识到这是同一个浏览器在访问同一个网站。
每一次的访问,都是没有任何关系的。
如果我们要实现多个页面之间共享数据的话我们就可以使用 Cookie 或者 Session 实现
cookie 是存储于访问者计算机的浏览器中。
可以让我们用同一个浏览器访问同一个域名的时候共享数据
# 1.2 Cookie能实现的功能
1、保持用户登录状态
2、保存用户浏览的历史记录
3、猜你喜欢,智能推荐
4、电商网站的加入购物车
# 02.cookie基本使用
# 2.0 使用演示
func (c *UserController) UsersGet() {
//1、设置cookie
c.Ctx.SetCookie("username", "zhangsan")
//2、设置cookie的过期时间 秒
c.Ctx.SetCookie("username", "lisi", 10)
//3、设置cookie访问的路径
c.Ctx.SetCookie("username", "wangwu", 1000, "/article")
//4、cookie 的路径 Domain (二级域名下面也可以访问cookie)
//itying.com www.itying.com a.itying.com b.itying.com
c.Ctx.SetCookie("username", "wangwu111111111", 1000, "/", ".itying.com")
// 5、SetCookie没法设置中文cookie
c.Ctx.SetCookie("username", "张三", 10000)
//6、cookie的加密 设置中文cookie aaaaaa表示设置cookie的时候加密字符串
c.Ctx.SetSecureCookie("aaaaaa", "username", "李四", 1000)
c.TplName = "index.html"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 2.1 设置获取 Cookie
- 注意:SetCookie 没法设置中文 cookie,如果要设置中文 Cookie 需要用 SetSecureCookie
this.Ctx.SetCookie("user","admin")
this.Ctx.GetCookie("user")
1
2
2
# 2.2 SetCookie传入多个参数
1)传入三个参数
- SetCookie 的第三个参数是时间,单位是秒 。
- 如果不设置时间,Cookie 只在本次回话有效,默认存活时间为 3600 秒
this.Ctx.SetCookie("user","admin",10)
1
2)七个参数的意义
this.Ctx.SetCookie("user","admin",nil,"/",".example.com",false,true)
1
第一个参数
key
第二个参数value
第三个参数过期时间
第四个参数cookie 的路径
第五个参数cookie 的路径 Domain 作用域(可不写)
第六个参数是 secure ,当 secure 值为 true 时 ,cookie 在 HTTP 中是无效,在 HTTPS中才有效 ,默认 false 第七个参数 httpOnly,是微软对 COOKIE 做的扩展。如果在 COOKIE 中设置了“httpOnly” 属性,则通过程序(JS 脚本、applet 等)将无法读取到 COOKIE 信息,防止 XSS 攻击产生 默认 false
# 2.3 设置加密 Cookie 以及中文 Cookie
this.SetSecureCookie("123456", "userinfo", "张三")
userinfo, ok := this.GetSecureCookie("123456", "userinfo")
1
2
2
- SetSecureCookie 、GetSecureCookie 和 SetCookie 、GetCookie 用法基本是一样的
- 要注意的是 SetSecureCookie 、GetSecureCookie 的第一个参数是加密字符串
- 设置和获取的时候必须一样才能获取到值
# 2.4 删除 Cookie
- beego 中并没有删除 Cookie 的函数
- 但是我们可通过 SetCookie 把 Cookie 设为空值,即可达成删除的效果
# 03.多个二级域名共享 cookie
- 1.分别把 a.itying.com 和 b.itying.com 解析到我们的服务器
- 2.我们想的是用户在 a.itying.com 中设置 Cookie 信息后在 b.itying.com 中获取刚才设置的cookie
- 3.也就是实现多个二级域名共享 cookie
- 4.这时候的话我们就可以这样设置 cookie
c.Ctx.SetSecureCookie("sign", "name", "lisi", 1000, "/", ".itying.com")
1
# 04.使用 Cookie 注意事项
Cookie 使用明文存储安全性差,可以直接查看浏览器获得,重要信息需要加密存储
各个浏览器对 Cookie 有限制,大概只能保存每个网站的 20 个 cookie。
上次更新: 2024/3/13 15:35:10