Cookie与Session

一、Cookie

我们浏览的网页使用的HTTP协议是无状态的的,若关闭网页,浏览器和服务器端的连接就会断开,下次打开网页又要重新连接,服务器无法从你上一次打开的连接上恢复上一次的对话,服务器不记得你。

Cookie与Session

 

      当有了Cookie后,会把你的信息记录在Cookie里,在打开网页和服务器建立连接的时候,客户端会把Cookie里的信息一同发送给服务器,服务器就能从Cookie里接收到信息里识别你的身份,提供给你专属的页面内容。

Cookie与Session

①我们访问浏览器的时候,浏览器会发送一个HTTP请求到服务器端

②服务器会发送一个HTTP响应到客户端,其中包括Sst-Cookie,意思就是浏览器建立一个cookie保存服务器指定的内容,比如用户信息和用户操作信息;

③浏览器保存好信息之后,下次我们再次访问网站的时候,浏览器再发送HTTP请求到服务器端时都会携带之前保存的cookie;

④服务器端会从收到的cookie中识别用户身份,就能让页面为你提供专门属于你的内容了。

 

 2、Cookie的特点

2.1cookie的数据信息存放在客户端浏览器上

2.2单个cookie保存的数据<=4KB,一个站点最多保存20个Cookie。

2.3cookie中只能保管ASCII字符串,并需要通过编码方式存储为Unicode字符或者二进制数据。

2.4cookie对客户端是可见的,别有用心的人可以分析存放在本地的cookie并进行cookie欺骗,所以它是不安全的。

2.5cookie保管在客户端,不占用服务器资源。对于并发用户十分多的网站,cookie是很好的选择。

2.6cookie支持跨域名访问。

 

二、Session(Session是基于Cookie的)

当客户端浏览器访问服务器的时候,服务器会向客户端浏览器发送每一个用户特有的会话编号sessionID,让它进入到Cookie里。

Cookie与Session

服务器同时也把SessionID和对应的用户信息、用户操作记录在服务器上,这些记录就是Session

Cookie与Session

当客户端浏览器再次访问时,会发送cookie给服务器,其中就包括SessionID

服务器从cookie里找到sessionID,再根据sessionID找到以前记录的用户信息就可以知道他之前操控些、访问过哪里。

 

2Session的特点

2.1session的数据信息存放在服务器上

2.2存储容量对于session来说并没有上限,但出于对服务器端的性能考虑,session内不要存放过多的东西,并且设置session删除机制

2.3session中能够存储任何类型的数据,包括且不限于string,integer,list,map等。

2.4session存储在服务器上,对客户端是透明对,不存在敏感信息泄漏的风险。

2.5session依赖于名为JSESSIONID的cookie,而cookie JSESSIONID的过期时间默认为-1,只需关闭窗口该session就会失效,因而session不能达到长期有效的效果。

2.6session是保管在服务器端的,每个用户都会产生一个session。假如并发访问的用户十分多,会产生十分多的session,耗费大量的内存。