什么是会话?
会话,简单点来理解就是客户端和服务端进行交互的过程,比如你在浏览器打开了一个www.baidu.com 的页面,那就说明你当前的浏览器和百度服务器建立了一个会话。
我们都知道 HTTP 是一种无状态的协议,无状态就是说在我们退出当前会话之后,再次建立连接的时候;服务端不会认识我们,也不知道我们曾经和它建立过连接,进行过什么样的数据交互。
这乍一听似乎也没有什么特别的影响,但是试想一下,假设目前你刚登录了百度网盘的账号,一个不小心点了页面刷新,这时候你再去访百度网盘的时候,又需要重新登录,这是不是很麻烦??
如果真的是这样的话,那我们用户的体验感是非常的不好的!
不过我们也知道事实上并不是这样,当我们二次访问百度网盘的时候并不需要重新登录。
慢着,慢着,这是为什么呢?刚不是说着 HTTP 是无状态的吗,怎么现在看来服务端还是认出我们来了??
其实HTTP还是无状态的,不过是现在都会引用一些会话技术,通过一些手段去记录状态罢了。
管理会话的技术
到会话管理技术,就不得不提提我们的 cookies 和 session 了。
引发需要重新登录的问题,最主要的就是因为服务端无法辨别用户对应的是谁;哪怕服务端是有该用户的数据的,但是因为服务端并没有认出它来,所以不会让该用户对应的数据返回,必须让其重新登录。
客户端:我想去你那
服务端:???,你是谁啊,我们认识?(无状态)
客户端:我是你的老朋友啊(再次登录)
服务端:哦豁,原来是你小子啊,过来吧
Cookie 的工作原理
- 浏览器第一次发送请求到服务端
- 服务器端创建Cookie,该Cookie中包含用户的信息,