当前位置:网站首页>一次搞明白 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站最好的视频!
边栏推荐
- 行测-图形推理-1-汉字类
- Gazebo import the mapping model created by blender
- Debezium series: source code reading snapshot reader
- Unity FAQ (I) lack of references
- Yarn cannot view the historical task log of yarn after enabling ACL user authentication. Solution
- 筑起云端 “免疫”屏障,让你的数据有备无患
- Debezium系列之:源码阅读之BinlogReader
- Ueeditor custom display insert code
- Form组件常用校验规则-2(持续更新中~)
- Blender exchange group, welcome to the water group ~
猜你喜欢

Line test - graphic reasoning -5- one stroke class

Line test - graphic reasoning -7- different graphic classes

行测-图形推理-5-一笔画类

Select sort (illustration +c code)

vite Unrestricted file system access to

行测-图形推理-6-相似图形类

LeetCode707. Design linked list

Visual design form QT designer design gui single form program

行测-图形推理-7-相异图形类

行测-图形推理-4-字母类
随机推荐
不夸张地说,这是我见过最通俗易懂的,pytest入门基础教程
Force deduction - question 561 - array splitting I - step by step parsing
0-5vac to 4-20mA AC current isolated transmitter / conversion module
XMIND mind mapping software sharing
7-18 simple simulation of banking business queue
行測-圖形推理-4-字母類
Revit secondary development - intercept project error / warning pop-up
php 获取图片信息的方法
UWA Q & a collection
如何选择合适的自动化测试工具?
Antd date component appears in English
Debezium series: binlogreader for source code reading
Pyqt GUI interface and logic separation
PHP records the pitfalls encountered in the complete docking of Tencent cloud live broadcast and im live group chat
Line test - graphic reasoning - 2 - black and white lattice class
行测-图形推理-5-一笔画类
Redis official ORM framework is more elegant than redistemplate
Remember an experience of using selectmany
UWA问答精选
ASP.NET Core入门五