cookie和token的区别

两者的共同点都是用来判断用户是否“已登录”,至于判断具体是哪个用户,服务器的做法不一样

        1、Cookie 验证是服务器在用户登录时生成 用户唯一标识 即 Sessionid 并以映射表的形式保存在该台服务器的内存上(一般做法,也可以保存在其他地方),接着将该 Sessionid 通过 set-cookie 头部传给客户端浏览器保存到 cookie,下次 同源请求 浏览器会自动带上 Sessionid 给服务器,服务器再去查对应的用户 id。

        2、Token 验证是服务器在用户登录时使用 密钥 对用户信息进行签名并将 用户信息和签名组合,这就是 Token 本身,此时用户 id 就可以放在用户信息上,理论上可以存放更多信息,只要别把密码放在里面就行,接着服务器不对这个 token 进行记录直接将这个 token 传给 客户端(不一定是浏览器,可能是 app),客户端的脚本会把 token 储存起来(浏览器可以储存到 cookie,也可以储存到 localStorage),下次客户端向服务器发起请求时主动将 token 放到请求头,服务器接收到这个 token,使用同一个密钥对用户信息部分进行签名,再和 token 中的签名部分做比较,如果相等说明 token 没有被窜改,服务器不需要做其他操作就能拿到用户信息中的用户 id,在大用户数的情况下可以减少服务器压力。

其实上面已经说了很多两者间的不同点,其他的大部分是 token 验证能做而 Cookie 验证不能做的事情,它们就是:

  1、在安全性方面,token 能防止 csrf 攻击。

  2、在扩展性方面,token 可以处理多端的身份验证,不仅仅局限于浏览器,只要客户端能对 token 进行储存就行。

  3、token 在跨域共享资源上表现惊艳,只要不同域的服务器之间约定好签名规则,大家都是一家人!

  4、token 可以携带丰富的用户信息,只要不怕别人知道,你想传什么随你便!

  5、Cookie 大小4KB,Cookie过期时间一般为1个月。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值