保存的位置不同
cookie
保存在浏览器端,session
保存在服务端。
存储内容不同
cookie
只能存储字符串,而session
存储结构类似于hashtable的结构,可以存放任何类型。
存储大小不同
cookie
最多可以存放4k大小的内容,session
则没有限制。
使用方式不同
cookie
:网站为了辨别用户身份,存储在用户本地终端上的数据,cookie
是由服务端生成的,发送给客户端(通常是浏览器)的。Cookie
总是保存在客户端中,按在客户端中存储位置,可分为内存cookie
和硬盘cookie
。内存cookie
由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。硬盘cookie
保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,硬盘cookie
不会被删除,其才能在时间是长期的。
session
:当用户访问到一个服务器,如果服务器启用session
,服务器就要为该用户创建一个session
,并非生成一个于此session
相关的session
,这个Session ID
是唯一的、不重复的字符串,这个session
将被在本次响应中返回到客户端保存,而保存这个Session ID
的正是Cookie
,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。
安全性不同
session
的安全性要高于cookie
cookie
存储在浏览器中,对客户端是可见的,客户端的一些程序可能会窥探、复制以至修改cookie
中的内容。
session
存储在服务器上,对客户端是透明的,不存在敏感信息泄露的风险。
cookie的session的应用场景
cookie
可以用来保存用户的登陆信息,如果删除cookie
则下一次用户仍需要重新登录
session
就类似于我们拿到钥匙去开锁,拿到的就是我们个人的信息,一般我们可以在session
中存放个人的信息或者购物车的信息。
session和cookie的弊端
cookie
的大小受限制,cookie
不安全,如果用户禁用cookie
则无法使用cookie
。如果过多的依赖session
,当很多用户同时登陆的时候,此时服务器压力过大。session
Id存放在cookie
中,此时如果对于一些浏览器不支持cookie
,此时还需要改写代码,将session
ID放到url中,也是不安全。