http状态,cookie、session、token的对比

http是无状态的,也就是说断开会话了服务器就不记得任何事情了,但这样对于用户会很麻烦,因为要不停输入用户名和密码

cookie是放在浏览器里的数据,第一次访问后服务器会set cookie,然后浏览器保存这个cookie,没发送都带着这个cookie,这样就不用每次我们手动输入账户名和密码,但这并不安全,假设电脑被黑了,浏览器里的个人信息就泄露了。并且一旦我们换个浏览器或者换台电脑,就没有这个cookie了。

所以,当用户第一次登陆后,服务器会创建一个带有签名的无规律字符串session(会话)返回给用户浏览器,这样就算黑客拿到session id也没啥大用,这是带签名的。当session的生命周期结束就会让用户重新输入用户名和密码

但是随着互联网发展,访问量激增,每个用户都存储一个session id在服务器内存里,服务器吃不消。并且session保存在一个服务器节点里,要是访问到别的节点上就识别不出来了。json web token(jwt)应运而生。现在是token(令牌)存在了浏览器客户端,服务器端只是来验证这个token,相当于是cpu换内存用

具体来说就是客户端发送header、payload、signature,然后服务端通过前两模块和加密密钥来计算比对signature,

token的方式,可以看出服务端密钥的重要性就显而易见,一旦泄露整个机制就崩塌了,这个时候就需要考虑HTTPS了。

相关推荐
I Promise347 小时前
多传感器融合&模型后处理C++工程师面试参考回答
开发语言·c++·面试
涤生大数据8 小时前
大数据面试高频题:row_number() 数据倾斜到底怎么解决?
java·大数据·面试
摇滚侠8 小时前
HashMap 源码解析 底层原理 面试如何回答
java·面试·职场和发展
hello world 9998 小时前
【网络问题】网卡发送数据包错误
网络·tcp/ip·计算机网络
刀法如飞8 小时前
《理解道德经》简单版-第 1 章:道可道,非常道
前端·后端·面试
Moment9 小时前
开发Agent为什么必须先做意图识别?
前端·后端·面试
plainGeekDev9 小时前
Kotlin协程面试题:suspend原理都说不清,协程你真会用?
android·面试·kotlin
神奇小汤圆10 小时前
一个程序员眼中的 AI 核心概念,讲透 LLM 、Agent 、MCP 、Skill 、RAG...
面试
张元清10 小时前
React 指针 Hook:Hover、长按、双击、刮擦和点击外部,告别那些经典 bug
前端·javascript·面试
怕浪猫11 小时前
Electron 开发实战(二):核心概念深度详解 | 进程通信+窗口高级+生命周期全掌握
前端·javascript·面试