session是存储在服务器端的,cookie是存储在客户端的,所以session的安全性要高于cookie。
再者,我们获取的session里的信息是通过存放在会话cookie里的sessionId获取的。
因为session是存放在服务器里的,所以session里的东西不断增加会增加服务器的负担,我们会把一些重要的东西放在session里,不太重要的放在客户端cookie里。
cookie分为两大类,一个是会话cookie和持久化cookie,他们的生命周期和浏览器是一致的,浏览器关了会话cooki也就消失了,而持久化会存储在客户端硬盘中。
1、存储位置不同:cookie在客户端浏览器,session在服务器。
2、存储容量不同:cookie<=4k,一个站点最多保留20个cookie;session没有上线,出于对服务器的保护,session内不可村过多东西,并且要设置session删除机制。
3、存储方式不同:ccokie只能保存ASCII字符串,并需要通过编码方式存储为Unicode字符或者二进制数据;session中能存储任何类型的数据,包括并不局限于string、integer、list、map等。
4、隐私策略不同:cookie对客户端是可见的,不安全,session存储在服务器上,安全。
5、有效期不同:开发可以通过设置cookie的属性,达到使cookie长期有效的效果;session依赖于名为JESSIONID的cookie,而cookie
JSESSIONID的过期时间默认为-1,只需关闭窗口该session就会失效,因而session达不到长期有效的效果。
6、跨域支持上不同:cookie支持跨域;session不支持跨域。
cookie 和session 的区别:
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
cookie 和session 的联系:
session是通过cookie来工作的
session和cookie之间是通过$_COOKIE['PHPSESSID']来联系的,通过$_COOKIE['PHPSESSID']可以知道session的id,从而获取到其他的信息。
在购物网站中通常将用户加入购物车的商品联通session_id记录到数据库中,当用户再次访问是,通过sessionid就可以查找到用户上次加入购物车的商品。因为sessionid是唯一的,记录到数据库中就可以根据这个查找了。
SESSION 是在服务器上的
COOKIE 是保存在本地的(客户端)