Cookie和Session
相同点
都是用来跟踪浏览器用户身份的会话方式。
不同点
1.存储位置
cookie:cookie在服务器,浏览器往返;不设置过期时间,数据存储在浏览器内存中,浏览器关闭销毁;设置过期时间,存储在硬盘中,过期时间结束才销毁。
session:存储在服务器
2.使用方式
session:服务器收到请求需要创建session对象时,先检查客户端请求中是否包含sessionID,有则根据sessionID返回对应的session对象;如果没有就创建新的session对象,并把sessionID在本次响应中返回给客户端。
3.存储内容
cookie:只能保存字符串类型,以文本的方式;
session:支持任何类型的对象,可含有多个对象。
4.存储大小
cookie:单个cookie存储数据大小4kb,很多的浏览器限制一个站点最多保存20个cookie;
session:不限制数据大小。
5.安全性
cookie:cookie欺骗,cookie截获;
session:安全性大于cookie
(1)sessionID存储在cookie中,攻破session首先攻破cookie;
(2)SessionID需要用户登录,或启动session_start才会有,攻破cookie也不一定会得到session;
(3)session_start启动后,前一次的sessionID会失效;session过期后,sessionID也失效。
(4)SessionID是加密的
6.使用场景
cookie:
(1)判断用户是否登陆过,实现自动登录/记住密码;
(2)保存上次登录的时间,页面。
session:保存每个用户的专用信息,通过sessionID区分不同的客户。
(1)商城购物车
(2)保存用户登录信息
(3)防止用户非法登录
7. 缺点
cookie:
(1)数据大小受限
(2)安全性低
(3)每次访问都要传送cookie给服务器,浪费带宽
session:
(1)session保存数据越多,占用内存越大,服务器内存压力越大
(2)依赖于cookie
(3)过度使用session变量会导致代码不可读且不好维护