一、Cookie
我们浏览的网页使用的HTTP协议是无状态的的,若关闭网页,浏览器和服务器端的连接就会断开,下次打开网页又要重新连接,服务器无法从你上一次打开的连接上恢复上一次的对话,服务器不记得你。
当有了Cookie后,会把你的信息记录在Cookie里,在打开网页和服务器建立连接的时候,客户端会把Cookie里的信息一同发送给服务器,服务器就能从Cookie里接收到信息里识别你的身份,提供给你专属的页面内容。
①我们访问浏览器的时候,浏览器会发送一个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里。
服务器同时也把SessionID和对应的用户信息、用户操作记录在服务器上,这些记录就是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,耗费大量的内存。