美文网首页
一文彻底搞懂Cookie、Session、Token到底是什么

一文彻底搞懂Cookie、Session、Token到底是什么

作者: 成功在于实践 | 来源:发表于2021-05-19 07:01 被阅读0次

    有一个小小的计划,将自己以前纠结的,经常会忘记的,一直保存在收藏夹里的,有时候面试也会被问的问题统统找出来,这次我们一起把它搞的明明白白。

    因为个人当前的认知,很多东西也是取之于网络,肯定错误百出,欢迎读者朋友批评指正。

    1 现在我们从清空Chrome浏览器收藏夹开始。

    今天聊一个很经典的问题:Cookie、Session、Token。

    这个问题,应该说是很经典了。要回答好这个问题,并不容易。特别是回答的面试官满意就更难了。

    如果不是当时帮助隔壁部门的小姐姐调试一个Jmeter的登录脚本,我是万不能想象还有企业在用cookie存储数据。也可能是我的见识过于小喽。

    2 废话不多说,我们先上链接。

    别人写的已经够好了,需要的直接点进去看吧。我后面也是对这些的总结,便于自己记忆罢了。

    傻傻分不清之 Cookie、Session、Token、JWT

    https://juejin.cn/post/6844904034181070861

    3 好了,我们一起来研究下这个问题。

    HTTP服务是无状态的。

    对于一些网站,必须想办法保持用户的状态,直到用户结束或者退出该网站。比如说电商网站,用户要经历登录---浏览商品---加入购物车---付款等。如果每一步都要重新登录,那就过于麻烦了。

    那怎么办呢,初期互联网都是使用cookie来存储用户信息的。

    4 首先来说说cookie

    cookie是存储在客户端的。

    下图大致介绍了Cookie产生的过程

    image

    Cookie中的参数设置

    image

    这个介绍的会比那个更详细些。


    image

    看到人家写的东西,感觉总结的真好。

    5 再来说说session

    Session是存储在服务端方,客户端只存储SessionId。

    image image

    6 Cookie 和 Session 的区别

    讲完了那么多,到底什么区别呢。

    可以从这几个方面说:

    安全性: Session 比 Cookie 安全,Session 是存储在服务器端的,Cookie 是存储在客户端的。

    存取值的类型不同:Cookie 只支持存字符串数据,想要设置其他类型的数据,需要将其转换成字符串,Session 可以存任意数据类型。

    有效期不同: Cookie 可设置为长时间保持,比如我们经常使用的默认登录功能,Session 一般失效时间较短,客户端关闭(默认情况下)或者 Session 超时都会失效。

    存储大小不同: 单个 Cookie 保存的数据不能超过 4K,Session 可存储数据远高于 Cookie,但是当访问量过多,会占用过多的服务器资源。

    我再补充一点: 数据保存在服务端会消耗服务器的性能。

    7 token又是干什么的

    Token类似一个令牌,无状态的,服务端所需的信息被Base64编码后放到Token中,服务器可以直接解码出其中的数据。

    我的理解呢,主要是现在的系统大都是分布式,不同的服务分布在不同地域不同机房的不同机器上。为了解决这个问题,就诞生了token这个解决方案。

    流程大致是这个样子的。

    (1)Acesss Token

    image

    (2)Refresh Token

    image

    我们公司也是这样用的,但是当时并不理解Refresh Token干啥用的,现在算是理解了。

    8 JWT token

    还是看原文吧,我怕自己写不好。

    http://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html

    好了,今天就到这了。

    其实本文里面最重要的就是两个链接,大家不要喷我哈。

    相关文章

      网友评论

          本文标题:一文彻底搞懂Cookie、Session、Token到底是什么

          本文链接:https://www.haomeiwen.com/subject/udqujltx.html