终于有人说清楚了Cookie、Session、Token的区别。详解,面试题

news2024/11/27 18:37:42

前言:

众所周知,我们访问网页一般都是使用http协议,而http协议的每一次访问都是无状态的。
何为无状态?就是这一次请求和上一次请求是没有任何关系的、互不认识的、没有关联的。这种无状态的好处就是快速,坏处就是无法把两次请求关联起来。

Cookie、Session、Token就是用来做持久化处理的,目的就是让客户端和服务端互相认识,将两次请求关联起来。

【文章末尾给大家准备了大佬的福利】

Cookie:

  • Cookie是一个非常具体的东西,指的就是浏览器里面能永久存储的一种数据,仅仅是浏览器实现的一种数据存储功能。
  • Cookie由服务器生成,通过响应头Set-Cookie字段发送给浏览器,浏览器把Cookie以Key Value形式保存到某个目录下的文本文件里,下一次请求同一个网站时就会把Cookie发送给服务器。由于Cookie是存储在客户端上的,所以浏览器加入了一些限制确保Cookie不会被恶意使用,同时不会占据太多磁盘空间,所以每个域的Cookie数量是有限的。
  • Cookie在项目中的应用场景: 日常登录一个网站,今天输入用户名密码登录成功了,第二天无需要重新输入用户名和密码。这个时候用到的一个机制就是Cookie。 浏览器记录用户浏览过的网页。
  • 总结:
    • Cookie由服务器生成,存储在客户端。
    • Cookie的数据格式为键值对,Cookie数据有失效时间看expire值。
    • 在项目中主要用于记住用户名密码或记录用户浏览过的网页。

Session:

  • Session从字面上解释就是“会话”。服务器要知道当前发请求给自己的是谁。为了做这种区分,服务器就要给每个客户端分配不同的“身份标识”,然后客户端每次想服务器发请求时,都带上这个“身份标识”,服务器就知道这个请求来自于谁。至于客户端怎么保存这个“身份标识”,可以有很多种方式,对于浏览器客户端,默认采用Cookie的方式。
  • 服务器使用Session把用户的信息临时保存在服务器上,用户离开网站后Session会被销毁。这种用户信息存储方式相对于Cookie来说更安全,可是Session有一个缺陷就是如果web服务器做了负载均衡,那么下一个操作请求到了另一台服务器的时候Session会丢失。
  • session在项目中的应用场景: 一般只保存登录用户的用户名,时长默认是30分钟,所以为什么当你登录系统后一段时间不使用就需要重新登录,因为30分钟后Session就已经丢失了。
  • 总结: Session由Web服务器生成,保存在服务端。 Session的数据格式也是键值对。 Session默认失效时间为30分钟。一般在浏览器的开发者工具(F12)的响应头的Cookie(或Set-Cookie)中查看,在项目中主要用于鉴权判断是否登录状态,只有是登录状态才可以访问服务器的网页和数据。

Token:

  • Token字面意思就是“令牌”,用户身份的验证方式,有点类似于Cookie,相对来说更安全。
  • 产生的过程:

  1. 用户第一次登录,服务端会产生一个Token,Token会存在于服务器的数据库上,然后将这个Token返回给浏览器。
  2. 客户端收到Token之后会将Token存储在本地上。
  3. 客户端再次发送请求的时候,会将Token发送到服务器上。
  4. 服务端收到这个Token时会将Token与自己本地的Token进行比较,得以来验证身份。

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

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

相关文章

Bytebase:让数据库管理和协作变得无缝

背景 在团队规模较小的时候,往往部门数量有限,沟通协作成本较低,暂时可以通过某几个人管理数据库的方式让独轮车跑起来。但是,随着团队规模的扩大,部门及人员数量的增长,部门间沟通协作成本增加&#xff0c…

探索环保葡萄酒之生物动力

根据生物动力农业和园艺协会的说法,生物动力农业是“一种精神-伦理-生态的农业、园艺、食品生产和营养方法。”生物动力农民将他们的农场或葡萄园视为一个坚固的有机体,一个自我维持的生态系统。这些农业哲学和实践在整个农业周期中应用了一种整体方法。…

开源GIS工具分享,基于Java的开源GIS代码库GeoTools介绍

GeoTools介绍 GeoTools是一个基于Java开发的开源(LGPL)的GIS代码库,它为地理空间数据的操作提供了符合标准的方法,例如实现地理信息系统。GeoTools 库数据结构基于开放地理空间联盟 (OGC) 规范。 GeoTools提供了用于处理空间数据的类库和工具,包括数据读写、空间分析、…

对话李彦宏:AI 大模型时代,应用开发机会比移动互联网大十

AI 2.0 时代,ChatGPT 的出现,让大模型引发的诸神之战正式打响。百度作为中国首个推出真实应战“武器”的公司,其基于千亿量级数据炼就而成的“文心一言”背后,蕴藏哪些鲜为人知的故事?这种打破人类对过往 NLP 之智能对…

说说你对immutable的理解?如何应用在react项目中?

一、是什么 Immutable,不可改变的,在计算机中,即指一旦创建,就不能再被更改的数据 对 Immutable对象的任何修改或添加删除操作都会返回一个新的 Immutable对象 Immutable 实现的原理是 Persistent Data Structure(持…

关掉电脑的自动更新

1、键盘上同时按【winR】,打开【运行】窗口,参考下图。 2、然后在运行窗口里输入【services.msc】,并按一下回车键,打开服务管理器,参考下图。 3、在服务中管理器中,我们找到【windows update】&#xff0c…

数实结合的复杂电磁环境构建解决方案

数实结合的复杂电磁环境构建解决方案 数实结合的复杂电磁环境构建 目前无线收发设备面临的电磁环境愈发恶劣。为了检验设备在复杂电磁环境下的实际工作性能,需进行各种应用条件下的测试和试验。外场测试难以提供各种应用环境,存在测试周期长、成本高、难…

电脑出现“此驱动器存在问题请立即扫描”该怎么办?

在您将可移动设备(例如:U盘、移动硬盘)连接到计算机时,您可能会收到一条错误消息“此驱动器存在问题请立即扫描并修复问题”。收到此错误消息后,您的设备在大多数情况下将无法访问。那么,电脑出现“此驱动器…

Redis系列-Redis安装与配置【2】

目录 Redis系列-Redis安装与配置【2】二、Redis安装与配置Redis安装步骤windowDocker安装 Redis配置文件说明Redis启动和停止命令启动Redis服务打开Redis客户端进行连接 使用可视化工具Another Redis Desktop ManagerRedisInsight 个人主页: 【⭐️个人主页】 需要您的【&#…

Linux 内核顶层Makefile 详解

目录 Linux 内核获取Linux 内核初次编译Linux 工程目录分析VSCode 工程创建顶层Makefile 详解make xxx_defconfig 过程Makefile.build 脚本分析make 过程built-in.o 文件编译生成过程make zImage 过程 前几章我们重点讲解了如何移植uboot 到I.MX6U-ALPHA 开发板上,从…

优思学院|为何CPK要大于1.33?

当初接触六西格玛或者质量工程的人们,通常对于Cpk值都会有一些疑问。其中一个最普遍的问题就是:为什么通常要求Cpk大于1.33呢? 这个问题首先涉及到正态分布的核心,和你的统计工具看到你的过程中的变化的能力。让我们来简单描绘一…

Stable Diffusion webui 源码调试(三)

Stable Diffusion webui 源码调试(三) 个人模型主页:LibLibai stable-diffusion-webui 版本:v1.4.1 内容更新随机,看心情调试代码~ shared 变量 shared变量,简直是一锅大杂烩,shared变量存放…

矢量绘图软件Sketch 99 for mac

Sketch是一款为用户提供设计和创建数字界面的矢量编辑工具。它主要用于UI/UX设计师、产品经理和开发人员,帮助他们快速设计和原型各种应用程序和网站。 Sketch具有简洁直观的界面,以及丰富的功能集,使得用户可以轻松地创建、编辑和共享精美的…

线程活跃性

文章目录 1. 简介2. 死锁3. 活锁4. 饥饿 1. 简介 所谓线程的活跃性,我们知道每个线程所要执行的java代码是有限的,在执行一段时间后线程自然会陷入Terminated状态,但由于某些外部原因导致线程一直执行不完,一直处于活跃状态&…

Apache APISIX Dashboard 未经认证访问导致 RCE(CVE-2021-45232)漏洞复现

漏洞描述 Apache APISIX 是一个动态、实时、高性能的 API 网关,而 Apache APISIX Dashboard 是一个简单易用的前端界面,用于管理 Apache APISIX。 在 2.10.1 之前的 Apache APISIX Dashboard 中,Manager API 使用了两个框架,并在…

分享5款会带来意想不到效果的软件

​ 有时候一些小工具,能给你带来一些意想不到的效果,我们来看看下面这5款工具,你又用过其中几款呢? 1.密码管理器——Bitwarden ​ Bitwarden是一款开源的密码管理器,可以安全地生成、存储和分享密码和其他敏感信息。…

探索经典算法:贪心、分治、动态规划等

1.贪心算法 贪心算法是一种常见的算法范式,通常在解决最优化问题中使用。 贪心算法是一种在每一步选择中都采取当前状态下最优决策的算法范式。其核心思想是选择每一步的最佳解决方案,以期望达到最终的全局最优解。这种算法特点在于只考虑局部最优解&am…

郑州市管城回族区政协副主席张惠云一行莅临中创算力调研指导工作

为促进企业健康发展,服务管城区企业。2023年11月8日,郑州市管城区政协副主席、工商联主席张惠云带队赴河南中创算力信息科技有限公司进行走访调研。 中创算力董事长许伟威、技术总监刘朝阳陪同考察。此次调研旨在深入了解中创算力的发展情况&#xff0c…

避坑丨一次看懂软著软件著作权登记避免「补正」的“方法”……

前言:2023年6月1日起,试运行软件版权登记网上办理。软件著作权申请登记,从提交到审核结束基本都得两个月以上。对很多企业来说,两个月的时间本来就长,但如果提交的材料不符合要求、不规范,大概率就会出现补…

将对象与返回的数据所对应的键相同时一一赋值

问题描述 对象与返回的数据直接赋值,会将多余的键与值也添加上 那么赋值时值要 目标对象的键所对应的值 解决方案: 利用双重遍历 来比对 当 键相同时再赋值 duiYingFuZhi(obj,data){for (let key in obj) {for (let index in data) {if (keyindex) {obj…