cookie、session、token 区别,他们本质上不是一种东西,但是都跟维持状态信息有关。
什么是状态信息呢?下面用登录作为讲解:
当我们登录之后,我们希望所有的页面都维持登录的状态,那我们就需要用cookie、session、token来进行实现。如果都不用的话会发生每次请求都需要验证操作,这样就比较麻烦。
Cookie:
存储在客户端的小型数据文件。
每次HTTP请求时,浏览器会自动发送cookie给服务器。
通常用于存储用户偏好或登录状态。
安全性较低,容易受到CSRF等攻击。
存储大小限制约为4KB。
Session:
存储在服务器端的数据结构。
通过在客户端cookie中存储唯一的session ID来识别用户。
可以存储更多的数据,但会增加服务器的存储压力。
比cookie更安全,因为数据不直接暴露在客户端。
Token:
服务端生成的一串加密的字符串,客户端在每次请求时发送给服务器。
不依赖于cookie,因此可以用于移动应用或跨域请求。
可以包含用户的身份信息和权限数据。
通常用于实现无状态的身份验证。
简而言之,cookie和session通常结合使用,通过在客户端存储session ID来维持用户状态,而token则是一种更灵活的方式,可以支持不同的客户端和跨域请求。