Cookie,Session,Token各自的作用与区别
本文最后更新于343 天前,其中的信息可能已经过时,如有错误请发送邮件到2763981847@qq.com

Cookie,Session,Token是在开发中经常会听到的名词,由于它们所发挥的作用比较相近,所以很多人容易把他们搞混淆,这里简单说明一下它们各自的实现机制与区别。

  • Cookie、Session、Token 都是用于 Web 应用程序中的身份验证和状态管理的技术。
  • Cookie 是存储在用户浏览器中的小文本文件,由 Web 服务器发送给浏览器并存储在本地。浏览器每次向服务器发送请求时,都会附带相应的 Cookie 信息,这样服务器就可以识别用户的身份和状态。Cookie 通常用于在客户端保持持久化状态信息,例如用户的登录信息、购物车等。但 Cookie 存在一些问题,例如用户可以禁用或删除 Cookie,或者 Cookie 可能会被其他人窃取或篡改。
  • Session 是在服务器端存储用户状态的一种技术。当用户第一次访问服务器时,服务器会创建一个 Session 对象,生成一个唯一的 Session ID,并将该 ID 通过 Cookie 或者 URL 的方式发送给客户端浏览器。当客户端再次访问服务器时,会带上 Session ID,服务器通过该 ID 查找到对应的 Session 对象,从而恢复用户的状态信息。相比 Cookie,Session 更加安全,因为 Session 数据存储在服务器端,用户无法直接修改或删除 Session 数据。
  • Token 是一种用于身份验证和授权的一般术语,指代一种表示用户身份或权限的凭证(令牌)。是由服务器端生成的一段字符串,一般包含用户身份信息和相关权限信息,并将其发送给客户端。客户端在之后的请求中,需要在请求头中附带该 Token。服务器通过解析 Token,识别用户身份并验证其权限。相比 Cookie 和 Session,Token 的优势在于其无状态性,服务器不需要维护 Session 对象,可以实现分布式部署和无状态服务,更适合于大规模 Web 应用程序
  • 那我们常听到的JWT又是什么呢?JWT(JSON Web Token)是一种具体的令牌实现标准,可以说Token是一个广义的术语,而JWT是一个具体的标准,定义了令牌的结构和使用方式。JWT通常由三部分组成:头部(Header)载荷(Payload)签名(Signature)。头部包含令牌的类型加密算法等元数据信息,载荷包含自定义的声明信息,如用户ID、角色等,签名用于验证令牌的完整性和真实性。由于JWT具有内置的签名机制,服务器端接收到Token时可以根据签名对其进行校验,所以可以防止令牌被篡改或伪造。
  • 总的来说,Cookie,Session,Token都具有各自的优缺点和其适用的应用场景,我们需要根据实际情况选择合适的技术,甚至有些情况需要这三者结合起来进行身份验证和状态管理的实现。

最后给大家推荐一个关于Cookie,Session,Token的讲解视频https://www.youtube.com/watch?v=GhrvZ5nUWNg,视频讲得十分生动详细,相信大家看完之后一定能解答心中的疑惑。

文章:Cookie,Session,Token各自的作用与区别
作者:oreki
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0协议。转载请注明文章地址及作者

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇