摘要:Cookie、Session、Token到底有什么区别?产品经理也该懂!这篇文章用最简单的方式讲清楚三者的原理和应用场景,读完你就能和技术同事聊得上认证机制了。
Cookie、Session、Token到底有什么区别?产品经理也该懂!这篇文章用最简单的方式讲清楚三者的原理和应用场景,读完你就能和技术同事聊得上认证机制了。
定义
存储在用户浏览器中的小数据文件(通常单条Cookie
工作原理
服务器通过响应头中的Set-Cookie字段向浏览器发送Cookie,浏览器会在后续请求中将相应Cookie包含在请求头中发送给服务器,服务器可读取其中信息来识别用户或提供个性化服务。
咱们可以通过浏览器控制台查看到Cookie信息:
前端调用后端接口时也会带上cookie信息:
定义
服务器端用于跟踪用户会话的机制,服务器为每个用户会话创建一个唯一的Session对象,在其中存储用户相关的数据,如用户登录状态、购物车信息。
工作原理
用户首次访问服务器时,服务器创建Session并分配唯一的SessionID,通常通过Cookie将SessionID发送到客户端。客户端后续请求都携带此ID,服务器据此识别用户并获取其Session数据
定义
一种由服务器生成并颁发给客户端的字符串,用于验证用户身份和授权访问,常用于实现单点登录、第三方登录等功能。
工作原理
服务器验证用户信息后生成Token并返回给客户端。客户端后续请求将Token发送给服务器,服务器验证Token的有效性来确定用户身份和权限,决定是否允许访问资源。
公司门卫其实无法记住所有同事的名字,但是又要确认身份才能放你进公司,咋办呢?两个办法:1️⃣ 员工自己刷工卡(携带Cookie);2️⃣ 外来人员主动向门卫自报家门和来访目的,然后保安大哥给你张临时出入证(出入证相当于Cookie,出入证中的信息相当于SessionID);
那Token呢,能怎么类比?授权书有见过或者用过吧,这就是现实中由公司给你颁发有指定权限范围、有效期的Token,授权书上的公章和法定代表人签名可以理解为Token签名;办事时只要带上这个授权书,办事人员就认可你的身份啦~
总结Cookie、Session和Token的主要区别在于:Session主要在服务器端存储数据,Cookie在客户端存储数据,Token主要用于身份验证和授权,通常不存储大量用户数据。
我们在淘宝下单时,淘宝需要判断我们是否登录并有权限购物,这是通过Session实现的;而淘宝首页为我们推荐的商品,是通过获取我们的Cookie中的浏览记录得出的。我们使用QQ登录其他网站时,网站是通过获取QQ返回的Token来验证我们的身份并登录的。
HTTP协议是一种无状态协议,即每次服务端接收到客户端的请求时都是一个全新的请求(是的,看起来就跟失忆了一样,但是这确实可以降低服务器的记忆负担,提升处理效率),服务器并不知道客户端的历史请求记录,Session和Cookie的主要目的其实就是为了弥补HTTP的无状态特性。
本文由 @肖沐 原创发布于人人都是产品经理。未经作者许可,禁止转载
题图来自Unsplash,基于CC0协议
来源:人人都是产品经理