cookie 和 session

243 阅读1分钟

Cookie 的定义

  • HTTP是无状态协议,服务器不能记录浏览器的访问状态,也就是说服务器不能区分两次请求是否由同一个客户端发出
  • Cookie就是服务器保存在浏览器上的一段信息。浏览器有了Cookie之后,每次向服务器发送请求时都会将该信息发送给服务器,服务器收到请求后,就可以根据该信息处理请求
  • Cookie 由服务器创建,并发送给浏览器,最终由浏览器保存

Cookie的用途

  • 保持用户登录状态
  • 电商的购物车

Cookie的设置

    r.GET("/cookie",func(c *gin.Context){
        cookie,err := c.Cookie("key_cookie")
        if err!=nil{
            cookie = "Not Set"
            //给客户端设置cookie
            //maxAge  int 单位为秒
            //path     cookie所在目录
            //domain   域名
            //secure   bool 是否只能通过https访问
            //httpOnly bool 是否允许别人通过Js获取自己的cookie
            c.SetCookie("key_cookie","value_cookie",60,"/","127.0.0.1",false,true)
        }
        fmt.Println("Cookie的值是:"+cookie)
    })

Cookie 的缺点

  • 不安全、明文
  • 增加带宽消耗
  • 可以被禁用
  • cookie 有上限

Session 的定义

Session可以弥补Cookie的不足,Session必须依赖Cookie才能使用,生成一个SessionId放在Cookie里传给客户端就可以

Session 中间件的开发(带补充)