HTTP的一个最大的特点就是它是无状态协议 —— 客户端发一次请求给服务器,走一个请求和响应的循环之后,服务器就立刻忘记可客户端,同一个客户端再次访问服务器的时候,服务器就不认识这个客户端了

客户端和服务器之间是不能保持一种“链接状态”的,所以说HTTP是一个无状态协议

为了实现用户登录的一种状态,实现认证和授权,我们该怎么做呢?

cookie是客户端浏览器上的专属于某个域名的一个小文件,用于服务端确认客户端

特征

客户端:浏览器每次发出请求的时候都会携带着cookie信息在HTTP的头信息里给服务器

服务器端:cookie一般都是在服务器端设置的,通过HTTP响应的头部:Set-Cookie返回给浏览器,浏览器拿到这些数据就可以保存到自己的cookie文件中

缺点

  • 每个域名最多只能有20条cookie,长度不能超过4KB
  • 安全性问题。如果cookie被人拦截了,那人转发就可以取得所有的会话权限
  • 浪费带宽
  • 不可以跨域调用

Session

session的含义是“会话”(或者也叫对话,session的本意是“一段时间”),

特征

每次有一个新的浏览器用户登录进来,服务器端都会创建一个新的session,那么在这个session之中,服务器就可以为这位特定用户(其实就是为特定的那个浏览器)保存任意信息了

认证

但是同一时刻,连接到服务器的浏览器可能成千上万,那么服务器是如何区分不同用户的浏览器的呢?

“使用cookie

具体来说,每个服务器端的 session 被创建的时候,都会有一个sessionId

被创建的时sessionId都会自动的被发送到浏览器的cookie中,这样,每个浏览器就跟自己在服务器上的session有了绑定关系了