一、解释
Cookie
- Cookie是一个存储在客户端(浏览器)的小型文本文件,用于存储用户信息,如会话标识符、用户首选项等。
- 按照域名存储,只有创建Cookie的域名下的请求才会携带该Cookie。
- 大小通常不超过4KB,每个站点最多保存约20个Cookie。
- 可以通过设置属性使其长期有效,或者设置为会话级别(关闭浏览器即失效)。
- 前后端都可以通过代码对Cookie进行增删改查操作。
Session
- Session是客户端和服务器之间建立的一种状态,用于保存用户的状态信息,如登录状态、购物车内容等。
- 数据存储在服务器端,可以是内存或磁盘。
- 没有大小限制,但出于性能考虑,不建议在Session中存储过多数据。
- Session中的信息只能由服务器端存取,客户端不能直接操作。
- Session ID通常通过Cookie在客户端和服务器之间传递。
Token
- 在Web开发中,Token通常指的是一个随机生成的字符串,用于验证用户的身份和权限。
- 与Session类似,但Token是保存在客户端的,可以是浏览器内存或localStorage等。
- Token的生成和验证通常在服务器端进行,客户端只需在请求时携带Token即可。
- Token通常用于实现无状态会话,即服务器端不保存用户的会话信息,只通过Token来验证用户身份。
二、区别
存储位置
- Cookie:存储在客户端浏览器上。
- Session:存储在服务器端。
- Token:保存在客户端,可以是浏览器内存或localStorage等。
安全性
- Cookie:对客户端可见,存在被篡改的风险,不适合存储敏感信息。
- Session:存储在服务器端,相对更安全,但Session ID通过Cookie传输时也可能被截获。
- Token:通常包含复杂的验证信息,如签名、时间戳等,安全性较高。
有效期
- Cookie:可以通过设置属性来控制有效期。
- Session:依赖于服务器端的设置和客户端的Session ID。
- Token:通常设置较短的过期时间,并需要定期刷新。
用途
- Cookie:主要用于跟踪用户行为和存储用户偏好。
- Session:用于保存用户状态信息,如登录状态、购物车内容等。
- Token:主要用于身份验证和授权,实现无状态会话。