当前位置:网站首页>一次搞明白 Session、Cookie、Token,面试问题全稿定
一次搞明白 Session、Cookie、Token,面试问题全稿定
2022-07-07 21:47:00 【小梧敲代码】
01、它们分别是什么?
session:
session的中⽂翻译是“会话”,当⽤户打开某个web应⽤时,便与web服务器产⽣⼀次session。服务器使⽤session把⽤户的信息临时保存在了服务器上,⽤户离开⽹站后session会被销毁。这种⽤户信息存储⽅式相对cookie来说更安全,可是session有⼀个缺陷:如果web服务器 做了负载均衡,那么下⼀个操作请求到了另⼀台服务器的时候session会丢失。
cookie:
cookie是保存在本地终端的数据。cookie由服务器⽣成,发送给浏览器,浏览器把cookie以kv形式保存到某个⽬录下的⽂本⽂件内,下⼀次请求同⼀⽹站时会把该cookie发送给服务器。由于cookie是存在客户端上的,所以浏览器加⼊了⼀些限制确保cookie不会被恶意使⽤,同 时不会占据太多磁盘空间,所以每个域的cookie数量是有限的。
cookie的组成有:名称(key)、值(value)、有效域(domain)、路径(域的路径,⼀般设置为全局:“”)、失效时间、安全标志(指定后,cookie只有在使⽤SSL连接时才发送到服务器(https))。
token:
token的意思是“令牌”,是⽤户⾝份的验证⽅式,最简单的token组成:uid(⽤户唯⼀的⾝份标识)、time(当前时间的时间戳)、sign(签名,由token的前⼏位+盐以哈希算法压缩成⼀定长的⼗六进制字符串,可以防⽌恶意第三⽅拼接token请求服务器)。还可以把不变的参数也放进token,避免多次查库。
02、它们之间有什么关系?
cookie,session都可以是token存储的一种方式。
cookie为存储在本地的数据,请求时会将该数据提交到服务器验证使用。
session为存储在服务器上的内存数据,只要会话没有中断,那么该数据持续有效。
toke通常上来说属于令牌,cookie,session为一种数据存储和使用方式,令牌可以存储在cookie,session,但是实际上通过url参数或者表单参数一样可以达到同样的效果。但是对于开发和维护来说成本较高,一旦后端要求修改参数,这样的使用方式对于修改来说是很头疼的事情。
03、它们本质上的区别?
session的使用方式是客户端cookie里存id,服务端session存用户数据,客户端访问服务端的时候,根据id找用户数据。
而token的使用方式是客户端里存id(也就是token)、用户信息、密文,服务端什么也不存,服务端只有一段加密代码,用来判断当前加密后的密文是否和客户端传递过来的密文一致,如果不一致,就是客户端的用户数据被篡改了,如果一致,就代表客户端的用户数据正常且正确。
流程:
session,注册登录->服务端将user存入session->将sessioni存入浏览器的cookie->再次访问时根据cookie里的sessionid找到session里的user。
token,注册登录->服务端基于用户信息与密钥生成一个token->将token+user 返回给浏览器->再次访问时传递token+user+密文数据,后台会再次使用user与密钥生成token,与传递过来的token比较,一致则正确。
session、cookie、token 这几个概念在面试中可以说是经常出现的,因为通过这个概念基本上可以了解到你对网络请求或者权限管理这一块是否有过了解和实际的应用。
最后感谢每一个认真阅读我文章的人,下面这个网盘链接也是我费了几天时间整理的非常全面的,希望也能帮助到有需要的你!

这些资料,对于想转行做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……
如果你不想一个人野蛮生长,找不到系统的资料,问题得不到帮助,坚持几天便放弃的感受的话,可以点击下方小卡片加入我们群,大家可以一起讨论交流,里面会有各种软件测试资料和技术交流。
| 点击文末小卡片领取 |
敲字不易,如果此文章对你有帮助的话,点个赞收个藏来个关注,给作者一个鼓励。也方便你下次能够快速查找。
自学推荐B站视频:
零基础转行软件测试:自学完软件测试,拿到了字节的测试岗offer,堪称B站最好的视频!
边栏推荐
- Write in front -- Talking about program development
- 筑起云端 “免疫”屏障,让你的数据有备无患
- Leetcode19. Delete the penultimate node of the linked list [double pointer]
- Debezium series: set role statement supporting mysql8
- How to choose the appropriate automated testing tools?
- 微服务架构开源框架详情介绍
- Install mxnet GPU version
- Debezium series: binlogreader for source code reading
- 行测-图形推理-9-线条问题类
- Line test - graphic reasoning -5- one stroke class
猜你喜欢

PCL .vtk文件与.pcd的相互转换

Remember aximp once Use of exe tool

Redis cluster installation

Line test - graphic reasoning -7- different graphic classes

Leetcode206. Reverse linked list
Redis官方ORM框架比RedisTemplate更优雅
Redis official ORM framework is more elegant than redistemplate
![Leetcode interview question 02.07 Linked list intersection [double pointer]](/img/a5/58b4735cd0e47f1417ac151a1bcca4.jpg)
Leetcode interview question 02.07 Linked list intersection [double pointer]

UWA问答精选

行測-圖形推理-4-字母類
随机推荐
Digital transformation: five steps to promote enterprise progress
PHP method of obtaining image information
Remember that a development is encountered in the pit of origin string sorting
微服務遠程Debug,Nocalhost + Rainbond微服務開發第二彈
LeetCode142. Circular linked list II [two pointers, two methods for judging links in the linked list and finding ring points]
Revit secondary development - project file to family file
What does it mean to prefix a string with F?
OpenGL configure assimp
Redis集群安装
ASEMI整流桥KBPC1510的型号数字代表什么
LeetCode707. Design linked list
Two methods of calling WCF service by C #
行测-图形推理-8-图群类
Visual design form QT designer design gui single form program
Revit secondary development - get the thickness / length / height of the beam
Cannot find module 'xxx' or its corresponding type declaration
行测-图形推理-3-对称图形类
筑起云端 “免疫”屏障,让你的数据有备无患
Leetcode interview question 02.07 Linked list intersection [double pointer]
Ueeditor custom display insert code