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了。

相关推荐
Lee川7 小时前
优雅进化的JavaScript:从ES6+新特性看现代前端开发范式
javascript·面试
Lee川10 小时前
从异步迷雾到优雅流程:JavaScript异步编程与内存管理的现代化之旅
javascript·面试
晴殇i12 小时前
揭秘JavaScript中那些“不冒泡”的DOM事件
前端·javascript·面试
绝无仅有13 小时前
Redis过期删除与内存淘汰策略详解
后端·面试·架构
绝无仅有13 小时前
Redis大Key问题排查与解决方案全解析
后端·面试·架构
AAA梅狸猫14 小时前
Looper.loop() 循环机制
面试
AAA梅狸猫14 小时前
Handler基本概念
面试
Wect14 小时前
浏览器缓存机制
前端·面试·浏览器
掘金安东尼15 小时前
Fun with TypeScript Generics:玩转 TS 泛型
前端·javascript·面试
掘金安东尼15 小时前
Next.js 企业级落地
前端·javascript·面试