一文助你快速理解Cookie,Session,Token的区别

news2024/11/17 23:33:47

目录

一、Cookie简介

1.1.cookie定义

1.2.cookie鉴权原理

1.3.cookie的分类

二、Session简介

2.1.session的定义

2.2.session会话机制

2.3.Session 的缺点

三、cookie与session区别

3.1.存储位置

3.2.安全性

3.3.占用服务器资源

3.4.存储空间

3.5.存储类型

3.6.总结建议

四、Token简介

4.1.token的引入

4.2.token的定义

4.3.使用Token的目的

4.4.token鉴权原理

五、session与token区别


HTTP协议本身是无状态的。什么是无状态?即服务器无法判断用户身份, 也就是说无法知道上一次请求的对象是谁, 此时就要使用到会话跟踪技术

Cookie是解决HTTP无状态性的有效手段,服务器可以设置或读取Cookie中所包含的信息,什么是cookie呢?

一、Cookie简介

1.1.cookie定义

cookie是由Web服务器保存在用户浏览器上的一小段文本,格式:key=value,包含用户相关的信息。

1.2.cookie鉴权原理

1.2.1.当客户端第一次访问服务器的时候,那么服务器就会生成Cookie信息,并且在响应头的
set-cookie里面把生成的cookie信息发送给客户端。
1.2.2.当客户端第2-N次访问服务器的时候,那么客户端就会在请求头的cookie带上cookie信
息,从而实现鉴权。

1.3.cookie的分类

1.3.1.会话cookie:保存在内存,当浏览器关闭之后就会自动化清除cookie

1.3.2.持久cookie:保存在 硬盘 ,浏览器关闭后不会清除,只有当失效时间到了才会自动清除。

二、Session简介

2.1.session的定义

session是依赖Cookie实现的,session是服务器端对象,是浏览器和服务器会话过程中,服务器分配的一块储存空间。

服务器默认为浏览器在cookie中设置 sessionid,浏览器在向服务器请求过程中传输 cookie 包含 sessionid ,服务器根据 sessionid 获取出会话中存储的信息,然后确定会话的身份信息。

2.2.session会话机制

客户端A访问服务器,服务器存储A的数据value;

把key返回给客户端A,客户端A下次带着key(session ID)来访问服务器;

服务器就能给出客户端A的数据。

如果做了负载均衡,客户端A访问了另一个服务器,则另一个服务器没有客户端A的数据

 

2.3.Session的缺点

Session 机制的缺点,比如: A 服务器存储了 Session,如果做了负载均衡后,

假如一段时间内 A 的访问量激增,会转发到 B 进行访问,

但是 B 服务器并没有存储 A 的 Session,会导致 Session 的失效。 

三、cookie与session区别

3.1.存储位置

cookie数据存:放在客户端浏览器上或本地

session数据:只能放在服务器上

3.2.安全性

cookie:安全性较差,别人可以分析存放在本地的Cookie并进行Cookie欺骗,以攻击网站        

session:安全性相对更高

3.3.占用服务器资源

cookie:服务器性能消耗小

session:一定时间内保存在服务器上,当访问增多,会比较占用服务器性能,考虑到减轻服务器性能压力,应当使用cookie

3.4.存储空间

单个cookie:保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie

session:没有大小限制和服务器的内存大小有关

3.5.存储类型

cookie:只能存储 String 类型的对象

session:能够存储任意的 java 对象

3.6.总结建议

登陆等重要信息存放为Session;其他信息如果需要保留,可以放在Cookie中

四、Token简介

4.1.token的引入

Token是在客户端频繁服务端请求数据,服务端频繁去数据库查询用户名和密码并进行对比,

判断用户名和密码正确与否,并作出相应提示,在这样的背景下,Token便应运而生。

4.2.token的定义

Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌;

当第一次登录后,服务器生成一个Token便将此Token返回给客户端;

以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。

4.3.使用Token的目的

Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。

4.4.token鉴权原理

Token令牌:客户端A访问服务器,服务器给了客户端token,客户端A拿着token访问服务器,服务器验证token,返回该token用户对应的数据

 总之,Token 是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候带上 Token 证明自己的合法地位

五、session与token区别

  1. token存储在客户端session存储在服务器端
  2. token提供认证和授权功能,作为身份认证,token安全性比session好,因为每个请求都有签名还能防止监听以及重放攻击session就必须靠链路层来保障通讯安全,如果你需要实现有状态的会话,仍然可以增加session来在服务器端保存一些状态
  3. token不一定存储;session存在服务器中,增加服务器压力;
  4. token可以跨域;session不可以跨域,它是与域名绑定的,扩展性不强;
  5. token适用于项目级的前后端分离(前后端代码运行在不同的服务器下);session这种会话存储方式方式只适用于客户端代码和服务端代码运行在同一台服务器上
  6. token是时间换空间;session是空间换时间
  7. token是开发定义的;session是http协议规定的;
  8. tokensession都是为了身份验证,token被翻译为令牌;session被翻译为会话
  9. tokensession都需要去管理过期时间

App通常用restful api跟server打交道。Rest是stateless的,也就是app不需要像Browser那样用cookie来保存session,因此用session、token来标示自己就够了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/97748.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

编程入门宝典,刚开始学习编程新手必看的5点建议!

编程就像围城,城里的人想出去,城外的人想进来。 对于零基础的小白,要杀入代码的战场需要准备好哪些东西呢?最帅的萌宝在此给大家分享5点建议。 1、选择编程语言 编程首要还是选择好适合自己的语言。 编程语言有:C/C、java、VB、P…

零基础学Python:编程规范

1. 注释 python注释也有自己的规范,在文章中会介绍到。注释可以起到一个备注的作用,团队合作的时候,个人编写的代码经常会被多人调用,为了让别人能更容易理解代码的通途,使用注释是非常有效的。 在说规范之前我们有必…

微服务综合部署——SpringBoot项目制作Docker镜像注册在Zookeeper并利用K8S技术部署

一、如果你要从头开发一个基于微服务架构的项目,项目中的服务最终要部署在k8s管理的镜像环境中,你认为应如何创建项目?与本次实验过程相比,哪些改进可以让开发更加合理高效? 第一步:搭建项目并制作合适的j…

回溯算法总结

目录介绍伪代码例题:解释:回溯算法中的优化去重伪代码剪枝常见题型子集例题全排列例题参考资料介绍 递归(DFS)是一个劲的往某一个方向搜索,而回溯算法建立在 DFS 基础之上的,但不同的是在搜索过程中,达到结束条件后&am…

SAP ABAP 扫描 ABAP 源代码(RS_ABAP_SOURCE_SCAN)

SAP ABAP 扫描 ABAP 源代码(RS_ABAP_SOURCE_SCAN) 引言: RS_ABAP_SOURCE_SCAN 是一个 SAP 标准 ABAP 报表程序,通过输入字符串文本,扫描 ABAP 源代码,列示查找字符串在 ABAP 源代码中出现的位置清单。本文…

20行python代码的入门级小游戏

0、背景: 作为一个python小白,今天从菜鸟教程上看了一些python的教程,看到了python的一些语法,对比起来(有其他语言功底),感觉还是非常有趣,就随手添了一点内容,改了一个…

【车载开发系列】CAN总线通信---总线报文格式

【车载开发系列】CAN总线通信—总线报文格式 CAN总线通信---总线报文格式【车载开发系列】CAN总线通信---总线报文格式一.什么是ISO15765二.ISO15765的目的三.单帧传输的概念四.多帧传输的概念五.诊断报文格式1)首帧FF2)连续帧CF3)流控帧FC4&…

【JavaScript】for循环

文章目录for循环案例1:两数相加案例2:绘制九九乘法表案例3:水仙花数案例4:绘制菱形案例5:计算表达式结果break和continue图片切换效果案例(轮播图结构)一、JavaScript代码二、HTML结构和CSS样式…

基于java+springmvc+mybatis+vue+mysql的演出道具租赁管理系统

项目介绍 前端页面: 功能:首页、道具出租、公告资讯、个人中心、后台管理 管理员后台页面: 功能:首页、个人中心、用户管理、商家管理、道具类型管理、道具出租管理、租赁订单管理、道具归还管理、我的收藏管理、系统管理 用户…

密西根大学张阳实验室郑伟博士在CASP15蛋白质结构预测大赛中斩获多项冠军

简报:在有着蛋白质结构预测领域奥林匹克竞赛之称的最新一届CASP比赛中(CASP15),密西根大学张阳教授和Peter Freddolino教授实验室的郑伟博士在多个比赛项目中获得冠军。其中D-I-TASSER算法(参赛名:“UM-TBM…

nodejs银行取号系统vue

目 录 1绪论 1 1.1项目研究的背景 1 1.2开发意义 1 1.3项目研究现状及内容 5 1.4论文结构 5 2开发技术介绍 7 2.1 B/S架构 7 2.2 MySQL 介绍 7 2.3 MySQL环境配置 7 3系统分析 9 3.1可行性分析 9 3.1.1技术可行性 9 3.1.2经济可行性 …

学会4种方法,掌握端到端测试处理数据..

推荐阅读: [内部资源] 想拿年薪30W的软件测试人员,这份资料必须领取~ Python自动化测试全栈性能测试全栈,挑战年薪40W 对Web应用程序运行自动化的端到端测试时,最常见的问题之一是如何处理测试数据。端到端测试通常会在通过应用…

授权服务器搭建以及授权码模式

前面的 GitHub 授权登录主要向大家展示了 OAuth2 中客户端的工作模式。对于大部分的开发者而言,日常接触到的 OAuth2 都是开发客户端,例如接入 QQ 登录、接入微信登录等。不过也有少量场景,可能需要开发者提供授权服务器与资源服务器&#xf…

Spring MVC【创建与使用】

Spring MVC【创建与使用】🍎一.Spring MVC介绍🍒1.1 什么是SpringMVC?🍒1.2 MVC 定义🍒1.3 Spring MVC 与 MVC 的区别🍒1.4 Spring MVC的基本功能🍎二. Spring MVC项目的创建🍒2.1 Spring MVC …

代码随想录DAY51 | 309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费

文章目录309.最佳买卖股票时机含冷冻期714.买卖股票的最佳时机含手续费309.最佳买卖股票时机含冷冻期 文章讲解:代码随想录 (programmercarl.com) 题目链接:309. 最佳买卖股票时机含冷冻期 - 力扣(LeetCode) 题目: …

Efficientdet源码详解

1.参数配置 最重要的参数配置如下 -p:配置文件,需要在project文件夹下新建配置文件-c:efficientdet的版本,efficientdet B0-B7-n:windows为0,linix根据自己的需求修改--batch_size:batch大小--data_path:数据集路径-p data --batch_size 16 其中&…

【Flask框架】——20 请求钩子

在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如: 在请求开始时,建立数据库连接; 在请求开始时,根据需求进行权限校验; 在请求结束时,指定数据的交互格式。 …

Dubbo 1 分布式系统中的相关概念 1.1 大型互联网项目结构目标

Dubbo 【黑马程序员Dubbo快速入门,Java分布式框架dubbo教程】 【非常重要就完事儿 了】 1 分布式系统中的相关概念 文章目录Dubbo1 分布式系统中的相关概念1.1 大型互联网项目结构目标1.1.1 传统项目 和 互联网项目1.1.2 互联网项目特点1.1.3 大型互联网项目架构…

【2022.12.17】备战春招Day12——每日一题 + 76. 最小覆盖子串 + 24. 两两交换链表中的节点

【每日一题】1764. 通过连接另一个数组的子数组得到一个数组 题目描述 给你一个长度为 n 的二维整数数组 groups ,同时给你一个整数数组 nums 。 你是否可以从 nums 中选出 n 个 不相交 的子数组,使得第 i 个子数组与 groups[i] (下标从 0…

C++绘制菱形(曼哈顿距离求解:贼快!!!)

思路: 1.双重for循环遍历输出是最基本的 2.了解曼哈顿距离 (1)菱形的输入一定是奇数 (2)我们是思想是填充 * 怎么填呢?我们来画图看看 以 3*3 的矩阵为例子! 我们来看看 距离是怎么定义的…