简析Cookie、Session、Token
手打不易,如果转摘,请注明出处!
注明原文:https://zhangxiaofan.blog.csdn.net/article/details/133498756
文章目录
- 简析Cookie、Session、Token
- 什么是 Cookie ?
- 什么是 Session ?
- Cookie 和 Session 到底是什么关系?
- 什么是 Token ?
- Session VS Token ?
- 总结
简析Cookie、Session、Token
什么是 Cookie ?
- cookie 存储在前端
例如第一次请求后端,会创建一个 sessionId 返回给前端,那么前端就会把 sessionId:xxxx 保存到 cookie 中, 下次请求的时候,前端会携带这个数据发送到后端。 - cookie 无法跨域
- cookie 只支持存储字符串数据, 大部分浏览器都不能超过 4KB
例如某次访问CSDN中的cookie
{Cookie: JSESSIONID=5124fa26-9334-4c7d-9123-6141b14b9c92;uuid_tt_dd=10_20850520640-1656988062941-486962;UserName=qXXXX4;UserInfo=8d100c5XXX4dd7a3fbc5e97;UserToken=8d100c5XXX0f4dd7a3fbc5e97;UserNick=Mr.XXX.;...
}
什么是 Session ?
- session 存储在后端
session 用于记录前后端会话信息,本身是基于 cookie 实现的,session 存储在后端(例如:redis),sessionId 则存储在前端的 cookie 中。因此 session 相对来说更安全。
简单的来说:sessionID 是连接 Cookie 和 Session 的一道桥梁;
注意:这并不是说它是唯一的桥梁,我们也可以在 sessionId 拼接在请求 url 的 parameter 中。 - session 能存储任意Object对象,大小理论上不限制,只要内存够。
一般session存哪些信息?
例如 org.apache.shiro.session.mgt.SimpleSession
就存储了以下信息:
private transient Serializable id;
private transient Date startTimestamp;
private transient Date stopTimestamp;
private transient Date lastAccessTime;
private transient long timeout;
private transient boolean expired;
private transient String host;
private transient Map<Object, Object> attributes;
包括:id、时间戳、过期时间、host、各种属性 attributes Map等等。
Cookie 和 Session 到底是什么关系?
网上一大把的文章都在对比 cookie 和 session。
严格来说, cookie 是一种存储方式, session 是会话记录。它们不应该看成一个维度的概念。
相同点就是它们都可以用来存储用户信息。
cookie 安全性、存储量有一定限制,但不会占用服务端资源。
session 安全性高、存储信息大,认证会话信息一般都存放在 session。
cookies 只是一种可以用来实现 session 的方式,但并不是唯一,理论上只要 sessionId 可以通过其他安全方式传输到服务端就行。
我也是比较 反对直接拿 cookie 和 session 做对比的 。
因此笔者认为,如果非要加一层关系,那么可以看成 协作互补。
什么是 Token ?
说到 token ,这里必须说一下 token 可以简单看成 2 大类型:
一种是本身不携带信息的token(传统token);
一种是本身就携带用户或认证信息的 token(例如JWT);
sessionId 就可以看成一个传统的 token。
token 就是一个令牌,前端请求发送到服务端,验证成功后,后端会生成一个 token 给前端,前端下次请求(有效期内)只需要带着这个 token 就可以访问后端API。
对于传统的 Token 来讲,服务端拿到 token 后需要去查数据库(Mysql、Redis等)校验是否过期或者是否有效
对于JWT这种类型的 Token 来讲,服务端本身是不存储信息的,直接通过解密和验证JWT即可。
Session VS Token ?
很多人直接把这两者进行比较,这样容易受误导。因为 Token 是有不同的实现方式,有的携带认证信息,有的不携带认证信息,那么在比较的时候,就要区分开来。
- session 是把会话信息到了服务端, 让本身无状态的 HTTP 变得
有状态
, 而 Token 是为了让服务端无状态
. - session 存储用户信息到服务端后,返回 sessionId 给前端,用于 sessionId 的随机性,所以可以看成 session 存储是安全的。 传统的 token 也需要存储信息到服务端,sessionId 就可以看成一个传统的 token。而 JWT这类Token 是本身携带信息的 token,无需存储到后端服务器。
- session 可以看成
空间换时间
, JWT这类Token 可以看成时间换空间
,传统的 token 实际上也占用了空间。 - token 实现跨域更方便,因为本身就是让服务端
无状态
。
总结
- Cookie 和 Session 不要直接拿来对比, Cookie 是一种前端存储方式,Session 是存在服务端的会话记录。详情看:Cookie 和 Session 到底是什么关系?
- Session 与 Token 做比较的时候,也要区分是 传统Token 还是 JWT之类的token
相关文章:
简析Cookie、Session、Token
手打不易,如果转摘,请注明出处! 注明原文:https://zhangxiaofan.blog.csdn.net/article/details/133498756 文章目录 简析Cookie、Session、Token什么是 Cookie ?什么是 Session ?Cookie 和 Session 到底是…...
加速attention计算的工业标准:flash attention 1和2算法的原理及实现
transformers目前大火,但是对于长序列来说,计算很慢,而且很耗费显存。对于transformer中的self attention计算来说,在时间复杂度上,对于每个位置,模型需要计算它与所有其他位置的相关性,这样的计…...
小程序获取用户手机号
在小程序中获取用户手机号需要以下步骤: 首先需要授权用户手机号,即在小程序中调用 wx.login() 方法获取用户的登录凭证,在回调函数中调用 wx.getUserInfo() 方法获取用户的个人信息,并且设置 withCredentials 参数为 true。 在获…...
Zama的fhEVM:基于全同态加密实现的隐私智能合约
1. 引言 Zama的fhEVM定位为: 基于全同态加密实现的隐私智能合约 解决方案 开源代码见: https://github.com/zama-ai/fhevm(TypeScript Solidity) Zama的fhEVM协议中主要包含: https://github.com/zama-ai/tfhe-…...
Mac M1安装ROS1或ROS2
1.首先进入Anaconda官网,安装Anaconda 2.创建、激活并配置环境 #创建环境 conda create -n ROS #激活环境 conda activate ROS #配置环境 conda config --add channels conda-forge conda config --add channels robostack conda config --set channel_priority st…...
[NISACTF 2022]popchains - 反序列化+伪协议
[NISACTF 2022]popchains 一、解题流程二、小小疑惑 一、解题流程 1、链条:Road_is_Long(construct->wakeup【page$r】-> toString【string$m】)-> Make_a_Change(construct->get【effort$t】)-> Try_W…...
分贝定义简介
一、什么是分贝 辅助单元Bel表示任何给定部件、电路或系统的输入和输出之间的对数比L,并且可以用电压、电流或功率来表示: 如果使用场量(电压或电流)代替功率量,则: 我们可以将增益或损耗因子相加为正或负dB值,而不是将其乘以比率。 分贝与功率转化的速读表如下所示:…...
socket简介
套接字(Socket)实质上就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,为应用层进程利网络协议交换数据提供了相应机制。套接字出于承上启下的作用,向上连接应用进程…...
【AI视野·今日Robot 机器人论文速览 第四十九期】Fri, 6 Oct 2023
AI视野今日CS.Robotics 机器人学论文速览 Fri, 6 Oct 2023 Totally 29 papers 👉上期速览✈更多精彩请移步主页 Interesting: 📚ContactGen, 基于生成模型的抓取手势生成,类人五指手。(from 伊利诺伊大学 香槟) 数据集:GRAB da…...
七、互联网技术——SQL查询
文章目录 一、基础查询二、高级查询三、SQL视图一、基础查询 某学校的教学信息关系数据库中有如下两个表(表的名字和字段均用中文名字)学生表(学号,姓名,性别,专业)成绩表(学号,课程名,分数)用SQL语句表达下述查询:[问题1]检索分数高于80分的所有学生的学号和分数select 学…...
1.6 计算机网络的性能
思维导图: 1.6.1 计算机网络的性能指标 前言: 我的理解: 这段前言主要介绍了关于计算机网络性能的两个方面的讨论。首先,计算机网络的性能可以通过一些重要的性能指标来衡量。但除了这些指标之外,还有一些非性能特征…...
小程序中如何核销订单和优惠券
小程序已成为许多商家线上线下开展业务的重要渠道。客户在小程序中下单/领券后,可能需要商家现场扫码核销,例如超市购物、卖票、游乐园等线下场景。下面就介绍小程序中如何核销订单和优惠券。 一、订单核销 订单核销是指商家在小程序中确认顾客已经支付…...
211 毕业就入职 30 人的小公司是什么体验
为什么“选择”了 30 人的小公司? 作为一个 211 毕业的学生,进入 30 人的小公司不管是 8 年前还是现在,应该都是比较稀少的,但是当面的我阴差阳错进了这样一个小公司。 为什么我选择进入这样一个 30 人的小公司呢?主…...
aardio 读取 Excel文件,显示在 listview 中
编写 main.aardio 如下 import win.ui; /*DSG{{*/ winform win.form(text"excel1";right801;bottom500) winform.add( button1{cls"button";text"读取Excel文件";left19;top14;right126;bottom44;z1}; button2{cls"button";text&quo…...
Web:前端常用的几种Http请求GET和POST样例
1、简述 在Web开发过程中,少不了发起Http请求服务端的接口数据,在不同的框架中使用了不同的Http请求方式,常用的请求有fetch、 ajax、 axios、XMLHttpRequest、request,以下样例仅供参考。 2、Fetch Fetch API 是一种 JavaScr…...
clickonce 发布的winform 如何CA认证?
要为使用ClickOnce发布的WinForms应用程序启用CA(证书颁发机构)认证,您可以按照以下步骤进行操作: 1. **获取数字证书**: - 首先,您需要获得一个数字证书,通常从受信任的CA购买。这个数字证…...
#力扣:13. 罗马数字转整数@FDDLC
13. 罗马数字转整数 一、Java import java.util.HashMap;class Solution {public int romanToInt(String s) {HashMap<Character, Integer> m new HashMap<>() {{put(I, 1);put(V, 5);put(X, 10);put(L, 50);put(C, 100);put(D, 500);put(M, 1000);}};char[] a …...
React18入门(第一篇)——JSX、TSX语法详解
文章目录 一、JSX 语法简介二、和 HTML 标签的几点不同三、JSX 属性四、JSX 事件4.1 简单点击事件4.2 类型限制4.3 带参数,箭头函数 五、插入 JS 变量六、JSX 中使用条件判断七、循环 一、JSX 语法简介 JSX - 是 JS 的扩展,写在 JS 代码里面,…...
【计算机基础知识】字符的编码表示
欢迎来到我的:世界 希望作者的文章对你有所帮助,有不足的地方还请指正,大家一起学习交流 ! 目录 前言1.西文字符编码2.中文字符编码汉字输入码汉字国标码汉字机内码汉字字形码 总结 前言 计算机处理的数据中,除了数值型数据以外…...
【面试题精讲】Java字符型常量和字符串常量的区别?
“ 有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top ” 首发博客地址[1] 面试题手册[2] 系列文章地址[3] Java 中的字符型常量和字符串常量是两种不同的数据类型。 字符型常量:字符型常量…...
【Vue面试题六】为什么Vue中的 v-if 和 v-for 不建议一起用?
文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:v-if和v-for的优先级是什…...
leetCode 674. 最长连续递增序列 动态规划 / 贪心策略
674. 最长连续递增序列 - 力扣(LeetCode) 给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。 连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每…...
数据中台实战(11)-数据中台的数据安全解决方案
0 微盟删库跑路 除了快、准和省,数据中台须安全,避免“微盟删库跑路”。 2020年2月23日19点,国内最大精准营销服务商微盟出现大面积系统故障,旗下300万商户线上业务全停,商铺后台所有数据被清。始作俑者是一位运维&a…...
林沛满-TCP之在途字节数
本文整理自:《Wireshark网络分析的艺术 第1版》 作者:林沛满 著 出版时间:2016-02 我一直谨记斯蒂芬霍金的金玉良言—每写一道数学公式就会失去一半读者。不过为了深度分析网络包,有时候是不得不计算的,好在小学一年级…...
HTTPS 加密工作过程
引言 HTTP 协议内容都是按照文本的方式明文传输的,这就导致在传输过程中出现一些被篡改的情况。例如臭名昭著的运营商劫持。显然, 明文传输是比较危险的事情,为此引入 HTTPS ,HTTPS 就是在 HTTP 的基础上进行了加密, 进一步的来保…...
校招秋招,性格和职业有关系吗?
企业在招聘应届毕业生时不再局限于普通的面试或者笔试,在互联网时代,为了能够更好的匹配需要的优质人才,企业会通过各种测试来提高招聘的准确率以及成功率。也许以前很多人都听说过性格和职业是有一定关系的,但是如何确定自己的性…...
网络和系统操作命令
目录 ping:用于检测网络是否通畅,以及网络时延情况。ipconfig:查看计算机的IP参数配置信息,如IP地址、默认网关、子网掩码等信息。netstat:显示协议统计信息和当前TCP/IP网络连接。tasklist:显示当前运行的…...
刷穿力扣(1~30)
更好的阅读体验 \huge{\color{red}{更好的阅读体验}} 更好的阅读体验 1. 两数之和 哈希表遍历数组,同时用 HashMap 维护已出现过的数及其下标若当前的数 nums[i] 满足 target - nums[i] 曾经出现过,则直接返回否则将其加入到哈希表中。 class Solution …...
栈和队列的基本操作
(一)实验类型:设计性 (二)实验目的: 1.掌握栈和队列的抽象数据类型。 2.掌握实现栈和队列的各种操作的算法。 3.理解栈与递归的关系。 4. 掌握队列的链式存贮结构及基…...
变压器绕组断股往往导致直流电阻不平衡率超标
变压器绕组断股往往导致直流电阻不平衡率超标, 例如, 某电厂 SFPSL—12000/220 型主变压器, 色谱分析结果发现总烃含量急剧增长, 测直流电阻, 其结果是高、 低压侧与制造厂及历年的数值相比较无异常, 但中压…...
老司机做爰网站老师影音/公司网站怎么申请怎么注册
[转] 字符编码笔记:ASCII,Unicode和UTF-8这是一篇关于字符集的很详细的文章,连我都能看明白,所以转来。文章来源: http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html字符编码笔记:ASCII࿰…...
香河网站建设/网站软件下载
转载于:https://www.cnblogs.com/panda88/p/6006372.html...
爱站网关键词密度查询/汽车行业网站建设
分享一个类的加载初始化代码demo,这段代码考察类中内容的加载顺序,很有意思 一起钻研走一下 public class InitializeDemo {private static int k 1;private static InitializeDemo t1 new InitializeDemo("t1");private static Initializ…...
wordpress中文主题购买/东莞网站推广优化网站
撰文 / 张楠编辑 / 李幼薇01都在骂,都在买“大家都在骂iPhone,但预购时身体却都很诚实。”苹果经销商王绍在朋友圈写道。他告诉「Wise财经」,iPhone 12系列虽然骂的人居多,但大家似乎都在用脚投票。“究竟iPhone 12系列好不好&…...
杭州网站建设(推荐乐云践新)/济南seo网站排名关键词优化
1.Wait 用法默认情况下,Task 是有线程池中的异步线程执行,是否执行完成,可以通过Task的的属性IsCompleted 来判断, 如果想在子线程工作完成之后,在进行后续主线程工作可以通过调用task.Wait() 来等待线程完成ÿ…...
电商平台要投资多少钱/sem优化技巧
最近爱上了霉霉的歌曲《love story》,想要到网上下载钢琴谱,但完整的大多都是需要付费的,为了贯彻个人理念,那当然是能白嫖就不放过啦,在此我也顺带教一教大家不使用编程语言,如何爬取网页上不能下载的图片…...