http请求中Cookie和Session的区别
Cookie 是访问某些网站以后在本地存储的一些网站相关的信息,下次再访问的时候减少一些步骤。另外一个更准确的说法是:Cookie 是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器,是一种在客户端保持状态的方案。由于 HTTP 协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识别具体的用户,这个机制就是 Session。
1、存储位置不同
Cookie和Session是解决http协议的无状态性,区别如下:
Cookie是将用户数据通过加密的方式保存在客户端,大多数情况Cookie存储在浏览器;Session是用于控制客户端和服务端的连接,Session存储在服务器;
2、存储容量不同
单个Cookie保存的数据不得超过4kb,一个站点最多20个Cookie,Session一般情况下没有上限,不过建议不要存放太多东西,否则影响性能;
3、存取方式不同
Cookie只能用ASCII字符串,通过编码方式获取Unicode字符或者二进制数据,不好存储复杂的信息,而Session能存储任何类型的数据;
4、隐私策略/安全性不同
Cookie放在客户端,可以进行Cookie欺骗,所以不安全,Session放在服务端,更加安全;
5、有效期不同
Cookie可以设置属性达到长期有效,Session依赖于JSESSIONID的Cookie,Cookie JSESSIONID的过期时间默认为-1,只需要关闭窗口Session就会失效,就算不依赖Cookie,用UrL重写也不能完成,如果Session超时时间过长,容易导致内存溢出;
6、服务器压力不同
Cookie保存在本地,不存在服务端压力,Session保存在服务端,每个用户产生一个Session,当访问增多,会比较占用服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用Cookie;
7、浏览器支持不同
如果浏览器禁用Cookie,那么Cookie直接失效,Session比较好点,可以用URL重写;
8、cookie和session应用的场景
cookie:用户的登录状态,记录用户的习惯,如购物车;
session:登录验证;
