Cookie、Session、Token的区别与联系

Cookie:

存储在浏览器端的文本数据,内存大小不超过4kb里面存储了用户信息和浏览的记录等敏感信息 用途:登录一个网站后下次在浏览该网站时可以直接登录不需要再次输入了 缺点:安全性不好,如果电脑别黑,在浏览器记录里就会cookie中就会暴露你的用户信息 cookie是浏览器端发送请求后服务器端生成保存在浏览器端的文本,下次登录的时候直接把cookie中的用户信息发送给服务器端,完成自动登录,但是为了安全性,诞生了新的存储机制:Session(会话)

session开始:浏览器访问服务器

cookie和seeion的关系:

seeion是服务器向浏览器发送数据时,包含在cookie中的

Session:

sessionID(没有规律的字符串,即使被黑了也很难通过sessionID获取用户名、密码)和回话结束时间(一般设置成cookie的有效期)

每次浏览器访问服务器端是都会把sessionID发送给服务器端,知道回话结束后才会丢弃SessionID想服务器端获取新的SessionID这需要重新登录了。 当浏览器端请求成功后,浏览器端就会生成cookie:

token的引出:

由于网络的高速发展,网络用户增加,如果服务器依旧使用基于Cookie的Session的话,假如大量时间有大量用户访问服务器的时候,服务器就会生成存储大量的SessionID在服务器里面,可能导致服务器的超载如果让数据库保存的话,假如数据库也崩溃了那就会影响用户获取sessionID,这时候JWT就出现了Json Web Token

什么是token:

存储在浏览器中的一段字符串:用户名+密码+密钥组成的字符串 header.payload.signature

header:声明需要什么算法生成签名会经过Base64编码

payload:一些特定的数据,有效期之类的经过Base64编码

signature:签名的信息,就是结合上面两段编码进行算法运算生成签名信息算法就是header声明的算法 过程:浏览器向服务器发送请求时,服务器就会生成JWT让浏览器保存,而不是服务器保存保存jwt签名的密文,让浏览器以Cookie或者Storage的形式进行存储,

token与session的区别:

session存储在服务器,而token存储来浏览器

总结:

session诞生存储与服务器那边有服务器主导,token诞生于服务器但是存储在浏览器由客户端主导,而cookie就是他们的载体起到运输作用,比如把sessionID通过cookie传输到浏览器这边,Cookie跟随HTTP,每个请求发送出去

相关推荐
BD_Marathon25 分钟前
Ubuntu:Mysql服务器
服务器·mysql·ubuntu
-凌凌漆-30 分钟前
【Qt】QStringLiteral 介绍
开发语言·qt
程序员爱钓鱼30 分钟前
Go语言项目工程化 — 常见开发工具与 CI/CD 支持
开发语言·后端·golang·gin
蓝色记忆31 分钟前
Composer PSR-4 自动加载机制的完整流程
php
军训猫猫头1 小时前
1.如何对多个控件进行高效的绑定 C#例子 WPF例子
开发语言·算法·c#·.net
真的想上岸啊1 小时前
学习C++、QT---18(C++ 记事本项目的stylesheet)
开发语言·c++·学习
明天好,会的1 小时前
跨平台ZeroMQ:在Rust中使用zmq库的完整指南
开发语言·后端·rust
0wioiw02 小时前
Ubuntu基础(监控重启和查找程序)
linux·服务器·ubuntu
艾希逐月2 小时前
TCP数据的发送和接收
服务器·网络·tcp/ip
丁劲犇2 小时前
用 Turbo Vision 2 为 Qt 6 控制台应用创建 TUI 字符 MainFrame
开发语言·c++·qt·tui·字符界面·curse