当前位置:网站首页>一次搞明白 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站最好的视频!
边栏推荐
- Line test - graphic reasoning - 4 - alphabetic class
- What does it mean to prefix a string with F?
- “拧巴”的早教行业:万亿市场,难出巨头
- Qt Graphicsview图形视图使用总结附流程图开发案例雏形
- Visual studio 2019 installation
- OpenGL configure assimp
- 7-18 simple simulation of banking business queue
- Debezium series: support the use of variables in the Kill Command
- Failed to initialize rosdep after installing ROS
- GBU1510-ASEMI电源专用15A整流桥GBU1510
猜你喜欢
行测-图形推理-1-汉字类
[problem] pytorch installation
Explain in detail the communication mode between arm A7 and risc-v e907 on Quanzhi v853
IP network active evaluation system -- x-vision
Robot autonomous exploration series papers environment code
行测-图形推理-9-线条问题类
Loki, the "open source star picking program", realizes the efficient management of harbor logs
XMIND mind mapping software sharing
行测-图形推理-8-图群类
Redis集群安装
随机推荐
Revit secondary development - project file to family file
Revit secondary development - intercept project error / warning pop-up
Matplotlib快速入门
LeetCode707. Design linked list
面试百问:如何测试App性能?
How pyGame rotates pictures
Line test - graphic reasoning - 2 - black and white lattice class
PCL .vtk文件与.pcd的相互转换
微服务架构开源框架详情介绍
Leetcode19. Delete the penultimate node of the linked list [double pointer]
[environment] pycharm sets the tool to convert QRC into py file
Nx10.0 installation tutorial
行测-图形推理-9-线条问题类
Details of the open source framework of microservice architecture
Microservice Remote debug, nocalhost + rainbond microservice Development second Bomb
Understand the autograd package in pytorch
变量与常量
Loki, the "open source star picking program", realizes the efficient management of harbor logs
Leetcode206. Reverse linked list
Common verification rules of form components -2 (continuously updating ~)