1.基本概念
Session是一种在服务器端存储的数据结构,用于跟踪用户访问的会话状态。每个会话都有一个唯一的会话ID,用于标识特定用户的会话数据。会话数据在用户访问时存储在服务器上,并在用户关闭客户端或者会话过期时被销毁。
Cookie是一种存储在用户计算机上的小型文本文件,由服务器发送到客户端,每当客户端发起HTTP请求的时候,浏览器会自动附带上与该域相关的所有Cookie信息。其通常用于跟踪用户的会话状态、记录用户偏好、存储其他与用户相关的信息。
2.区别
综上所述,二者的区别大致可以从存储位置、容量、生命周期及安全性这4个角度来阐述:
Session | Cookie | |
存储位置 | 服务器端 | 客户端(浏览器) |
数据类型与大小 | 任意数据类型,大小仅受服务器资源限制(硬件配置) | 只能存储字符串,大小通常限制在4KB内,如需存储复杂数据结果 ,需将其序列化(如JSON格式化) |
生命周期管理 | 由服务器控制,可以通过设定过期时间(用户长时间不活动)或者关闭浏览器在会话结束后主动清理 | Cookie的生命周期可以由服务器设置,通过设置Expires或Max-Age属性来指定Cookie的过期时间。同时,客户端(浏览器)也可以根据会话行为或用户设置来管理Cookie的生命周期,例如在会话结束时删除会话Cookie,或者用户手动清除浏览器中的Cookie。 |
数据安全性 | 由于数据保存在服务器,相对安全,不易被客户端直接访问或篡改 | 由于保存在客户端,相对容易被查看、编辑,存在一定的安全风险 |
3.实际项目中的运用
-
记住密码功能:
当用户选择“记住密码”选项时,服务器会在用户登录成功后生成一个持久性Cookie,其中包含加密的用户凭据或令牌。这个Cookie通常会设置一个较长的过期时间,比如几天或几周,以便用户在一段时间内无需重新登录即可访问网站。当用户再次访问网站时,服务器会检查该Cookie,如果存在且未过期,则自动登录用户,而无需用户再次输入用户名和密码。 -
用户登录和会话管理功能:
用户登录后,服务器会创建一个Session,并将Session ID 存储在Cookie中,通常是一个会话Cookie。这个会话Cookie的生命周期通常是在用户关闭浏览器时过期,或者在一定时间内没有活动时过期,以确保用户会话的安全性。Session通常用于存储用户的身份验证信息、权限信息以及其他与用户相关的数据,以便在用户与服务器之间的会话期间进行跟踪和管理。