Cookie和Session以及两者区别

Cookie

Cookie是有服务端生成的,发送给客户端(通常指的是浏览器)。Cookie总保存在客户端中。Cookie在客户端存储又可分为会话Cookie和持久Cookie。


会话Cookie:会话Cookie确切来说就是存放在客户浏览器的内存中,所以它们的生命周期和浏览器的生命周期一致,浏览器关闭Cookie也就消失,生命周期短暂。

持久Cookie:持久Cookie是存放在客户端硬盘中,生命周期是我们在设置Cookie的时候设置保存时间。


作用:Cookie的根本作用就是在客户端存储用户访问网站的一些信息。典型的应用有:

1、记住密码,下次自动登录。

2、购物车功能。

3、记录用户浏览数据,进行商品(广告)推荐。


缺陷

1、Cookie会被附加在每个HTTP请求中,所以无形中增加了流量。

2、由于在HTTP请求中的Cookie是明文传递的,所以安全性成问题。(除非用HTTPS)

3、Cookie的大小限制在4KB左右。对于复杂的存储需求来说是不够用的。


Session

Session 有服务器生成,保存在服务器的内存、缓存、硬盘和数据库中


作用:Session的根本作用就是在服务端存储用户和服务器会话的一些信息。典型的应用有:

1、判断用户是否登录。

2、购物车功能。


Cookie和Session的区别

1、存放位置不同

Cookie保存在客户端,Session保存在服务端。

2、存取方式不同

Cookie中只能保管ASCII字符串,不能直接存取java对象。如果存储稍微复杂的信息,运用Cookie是比较艰难的。

Session中能够存取任何类型的数据,如String、Integer、List、Map等。也能直接报关javaBean及任何java类,运行方便。

3、安全性的不同

Cookie存储在浏览器中,对客户端是可见的,客户端的一些程序可能会窥探、复制以至修正Cookie中的内容。

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

4、有效期的不同

Cookie是存放在浏览器中,浏览器关闭Cookie消失。如果想要Cookie保存时间变长,就要说自己手动设置Cookie的过期时间。

Session是存放在服务端,浏览器关闭Session不会消失。想要Session消失要关闭服务器,活着Session过期(Session默认过期时间是30分钟),也可以调用invalidate()方法。

5、对服务器造成的压力不同

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

Cookie保管在客户端,不占用服务器资源。假如并发阅读的用户十分多,Cookie是很好的选择。

6、跨域支持上的不同

Cookie支持跨域名访问,例如将demo属性设置为“.baidu.com”,则以“.baidu.com”为后缀的一切域名均能够访问该Cookie。跨域名Cookie如今被普遍用在网络中。

Session则不会支持跨域名访问。Session仅在他所在的域名内有效。 








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值