Cookie 和 Session 的存在什么样的区别呢?
1.存储位置不同:
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 用于登录验证。