Cookie和Session的区别

Cookie和Session的区别 
 
1、无状态HTTP
在了解cookie和session之前,我们需要了解HTTP的一个特点,叫做无状态,即服务器不知道用户上一次做了什么,这严重阻碍了交互式Web应用程序的实现。在典型的网上购物场景中,用户浏览了几个页面,买了一盒饼干和两饮料。最后结帐时,由于HTTP的无状态性,不通过额外的手段,服务器并不知道用户到底买了什么。为了做到这点,这时,两种用于保持HTTP链接状态的基数出现了,分别是Cookie和session。
 
2、Session
Session,中文称之为会话,本义指有始有终的一系列动作。在web中Session对象用来存储用户的属性和配置信息,这样当用户在应用不同页面间跳转时,存储在session对象中的变量不会丢失,当用户登录请求时如果还没有Session,那么Web服务器会自动创建一个Session对象,当Session过期或放弃后,服务器将终止该Session。
 
3、Cookie
指网站为了鉴别用户身份、进行Session跟踪而存储在本地终端上的数据(通常经过加密)。Cookie是由服务端生成的,发送给客户端的字符串。按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie: 内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了。硬盘Cookie保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的。所以,按存在时间,可分为非持久Cookie和持久Cookie。
那么,怎样利用cookie保持状态呢?
用户第一次请求登录后服务端会生成一个session,服务器会返回一个响应头中带有set-cookie的字段相应给客户端,这个字段(session id)用来标记用户,客户端浏览器会把这个字段存起来,下次访问相同网站时把保存的cookie放在请求头中传给服务端,cookie中携带session id,服务器通过检查cookie就可以找到对应的session,继而通过判断session判断用户状态,如果session当前是有效的,就证明用户是登录状态。
反之,如果传给服务器的cookie是无效的,或者seesion过期了,此时页面可能会收到错误响应或跳转登录页面
cookie和session相互配合,一个在服务端,一个在客户端,共同实现登录控制。
 
4、Cookie和Session的区别
(1)、存放位置不同
Cookie保存在客户端,Session保存在服务端。
(2) 、存取方式的不同
 Cookie中只能保管ASCII字符串
而Session中能够存取任何类型的数据,包括而不限于String、Integer、对象等。能够把Session看做是一个Java容器类。 
posted @ 2022-07-23 21:14  张小丹  阅读(35)  评论(0编辑  收藏  举报