简谈cookie、session、token的区别

引言:HTTP协议是无状态的,这种无状态意味着程序需要验证每一次请求,从而辨别客户端的身份。


Cookie

  1. cookie由服务器生成,发送给浏览器,浏览器把cookie以kv形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该cookie发送给服务器。所以cookie是保存在浏览器的客户端。
  2. 单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点最多保存20个cookie。
  3. 一般会存储用户的身份信息。
  4. 可以删除,删除后,重新访问会再次生成。
  5. 有些系统也会通过cookie记录一些用户的操作习惯。
  6. cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗。

Session

  1. 登录后,服务器端发送一个随机的ID值,来进行用户身份的识别。
  2. 服务器使用session把用户的信息临时保存在了服务器上,用户离开网站后session会被销毁。这种用户信息存储方式相对cookie来说更安全。
  3. 缺陷:如果web服务器做了负载均衡,那么下一个操作请求到了另一台服务器的时候session会丢失。所以session一般只针对一个应用服务器有效。
  4. 有时效性,一般30分钟。

Token

基于Token的身份验证的过程如下:

  1. 用户通过用户名和密码发送请求。

  2. 程序验证。

  3. 校验成功后就返回一个签名的Token给客户端。

  4. 客户端储存token

  5. 客户端每次访问API都是携带Token到服务器端。

  6. 服务器端采用filter过滤器校验。校验成功则返回请求数据,校验失败则返回错误码

Token的优势:

  • 无状态、可扩展
    • 在客户端存储的Tokens是无状态的,并且能够被扩展。基于这种无状态和不存储Session信息,负载均衡器能够将用户信息从一个服务传到其他服务器上。
  • 安全性
    • 请求中发送token而不再是发送cookie能够防止CSRF(跨站请求伪造)。即使在客户端使用cookie存储token,cookie也仅仅是一个存储机制而不是用于认证。不将信息存储在Session中,让我们少了对session操作。
    • 有时效性,一段时间之后用户需要重新验证。
  • 可扩展性
    • Tokens能够创建与其它程序共享权限的程序。例:能将一个随便的社交帐号和自己的大号(Fackbook或是Twitter)联系起来。
    • 使用tokens时,可以提供可选的权限给第三方应用程序。
  • 多平台跨越
    • 只要用户有一个通过了验证的token,数据和资源就能够在任何域上被请求到。
    • 涉及到CORS(跨域资源共享),参阅跨域资源共享 CORS 详解

Note:一些发展史及更详细的解说也可参阅cookie、session与token的真正区别

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BetterFate!

爱你哦!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值