Cookie与Session的工作流程

news2024/12/25 8:55:25

文章目录

    • Cookie
    • cookie的工作流程
      • 1.cookie从哪里来
      • 2.cookie到哪里去
      • 3.cookie是做什么的
    • Session
    • Session工作流程

Cookie与Session都是http协议中的机制,都是用来追踪浏览器用户身份的会话方式.但是又有各自的工作流程.

Cookie

cookie是浏览器在本地存储数据的一种机制。

cookie的工作流程

1.cookie从哪里来

服务器在响应中通过set-cookie字段返回给浏览器的。

2.cookie到哪里去

当浏览器再次向服务器发送http请求时,请求会携带上cookie。

3.cookie是做什么的

在说cookie是做什么之前,先来了解一下htttp。http是无状态的,上一条通信和下一条通信之间没有直接的联系。
那么我们如果下一条通信需要上一条通信的相关信息呢?此时就需要借助cookie来实现了。

cookie的作用就是:
当用户浏览某个站点并注册帐号,就会生成一个Cookie文件用于记录登录信息。

cookie就类似于医院的就诊卡,去医院时刷一下就诊卡,医生就知道你是谁并且得到有关你的详细信息。

工作流程大概就是
1.浏览器向服务器发送http请求,浏览器返回http响应是通过set-cookie字段返回给浏览器的cookie。
2.浏览器再向服务器发送http请求时,就会携带上cookie字段。服务器就能跟几乎cookie中的内容识别用户登录身份信息。

Session

session是服务器实现用户身份区分的一种机制

上面我们知道了cookie可以记录用户身份信息。但是,如何进行身份标识,和存储用户身份信息是需要服务器支持的。(毕竟cookie是通过服务器得到的)Session就是用来做这个的。

Session工作流程

1.Session会给当前用户分配一个sessionId,同时记录下当时用户的一些身份信息;
2.sessionId就会被服务器返回给浏览器的cookie中
3.后续浏览器访问服务器时,就会携带上sessionId。服务器就能够根据sessionId识别出当前的用户身份。

通常情况下,cookie和session是一起配合工作的:
例如,我们实现一个简单的用户登录:一个登录页和一个主页。
登录页有用户名和密码以及一个提交按钮,点击提交会发送一个Post请求。登录成功后,跳转到主页。显示欢迎“用户名”。

整体的工作流程如下:
在这里插入图片描述

1.浏览器向服务器发送一个http请求,获取登录页面;浏览器返回登录页的html。
在这里插入图片描述
2.浏览器在登录页输入用户名和密码。点击登录,会向服务器发送一个post请求。服务器再收到请求后,会返回一个set-cookie(里面就携带了sessionId).登录成功
在这里插入图片描述

3.浏览器访问主页时,就会带上cookie字段,里面包含了sessionId。服务器收到请求后,解析请求,得到cookie字段里的sessionId,就得到了这个用户的身份信息,返回对应的html。
在这里插入图片描述

抓包得到:
第一次访问登录页时是没有cookie的:
在这里插入图片描述
返回响应时,通过set-cookie字段返回cookie
在这里插入图片描述

访问主页时:
在这里插入图片描述

返回响应:
在这里插入图片描述

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

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

相关文章

java从入门到起飞——基础概念

目录 背景注释和关键字注释关键字 常量变量数据类型计算存储单元数据类型分类 标识符小驼峰命名法(方法、变量)大驼峰命名法(类) 类型转换自动类型转换强制类型转换 计算机中的数据存储总结 背景 学编程这么长时间了,重…

Java Swing花样玩法:教你用代码制作六一儿童节的精美贺卡(简单版)

✨博主:命运之光 ✨专栏:Java经典程序设计 前言:这篇博客在打开可能会自动播放视频,视频有音乐,请及时静音哈🙂 目录 ✨前言 ✨引言 ✨简单介绍一下Javaswing这项技术简单介绍一下Javaswing这项技术&a…

电子模块|压力传感器模块HX711---硬件介绍与C51STM32驱动

电子模块|压力传感器模块HX711---硬件介绍与C51&&STM32驱动 实物照片模块简介模块特点 硬件模拟输入供电电源时钟选择串口通讯复位和断电HX711相关部分的 PCB 设计 软件驱动C51软件代码STM32软件代码 实物照片 模块简介 HX711是一款专为高精度称重传感器而设计的24位A…

全志V3S嵌入式驱动开发(音频输出和音频录制)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 之前在芯片公司的时候,基本没有看过音频这一块,只知道有个alsa框架这么个知识点。要驱动音频,需要两部分&#…

10-风险管理:如何应对暗礁风险?系统化风险管理让你安心!

项目已到中期,目前看很顺利,但隐隐不安:项目进展越平稳,我越觉不安。我担心项目会不会存在什么风险,而自己却没发现。 这种担心很必要,因为项目从构思起,就存在风险。光担心没用,项…

如何用LoadRunner 做性能测试?一篇文章教会你

目录 一、loadrunner介绍 二、测试计划 三、创建测试脚本 四、创建测试场景 五、分析结果 六、性能指标 一、loadrunner介绍 loadrunner有三个软件,其中Virtual User Generator是用于录制测试脚本的,是一个虚拟用户生成器。Controller用于创建、运…

CSS常用属性

目录 1.CSS是什么? 2.基本语法 3.引入方式 1.内部样式表 2.行内样式表 3.外部样式 4.基础选择器 1.标签选择器 2.类选择器 3.id选择器 4.通配符选择器 基础选择器总结 5.复合选择器 1.后代选择器 2.子选择器 3.并集选择器 4.伪类选择器 1) 链接伪类…

行业风向:国产新能源汽车如何“扬帆起航”闯世界?

历经十余年的积累和发展,受益于国家财政政策的大力支持、行业技术水平的大幅提升、车企研发与营销费用的大力投入等多重因素,我国新能源汽车走向了高速发展阶段,并一举成为全球最大的新能源汽车市场,在续航里程、环境适应性、整车…

Hooks

私人博客 许小墨のBlog —— 菜鸡博客直通车 系列文章完整版,配图更多,CSDN博文图片需要手动上传,因此文章配图较少,看不懂的可以去菜鸡博客参考一下配图! 系列文章目录 前端系列文章——传送门 后端系列文章——传送…

以太网交换机的生成树协议STP

以太网交换机的生成树协议STP 笔记来源: 湖科大教书匠:以太网交换机的生成树协议STP 声明:该学习笔记来自湖科大教书匠,笔记仅做学习参考 如下图所示以太网中出现链路故障导致部分主机间无法进行通信 如何提高以太网的可靠性&am…

Elasticsearch:复制 - replication

在本篇文章中,我们来讲述 Elasrticsearch 集群中重要的一个概念 replication,也即复制。 了解 Elasticsearch 中的分片复制 默认情况下,索引由单个分片组成,但是如果存储分片的节点出现故障(例如磁盘故障)…

【Python基础】- 基础数据类型(下)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

一文吃透Java并发高频面试题

内容摘自我的学习网站:topjavaer.cn 分享50道Java并发高频面试题。 线程池 线程池:一个管理线程的池子。 为什么平时都是使用线程池创建线程,直接new一个线程不好吗? 嗯,手动创建线程有两个缺点 不受控风险频繁创…

typescript 相关概念

TypeScript 开发环境搭建 下载Node.js 14.15.1版本64位:https://nodejs.org/dist/v14.15.1/node-v14.15.1-x64.msi node官网: Node.js 安装Node.js 使用npm全局安装typescript 进入命令行 输入: npm i -g typescript 创建一个ts文件 使用tsc对ts文件…

从0-1一起学习live555设计思想之一 基础运行环境 + 任务调度

系列文章目录 文章目录 系列文章目录前言一、基础组件总览二、UsageEnvironment三、BasicUsageEnvironment0四、BasicUsageEnvironment五、TaskScheduler六、BasicTaskScheduler0七、DelayQueue八、BasicTaskScheduler九、基础调度总结总结前言 一、基础组件总览 本篇开始分析…

【OpenCV • c++】滑动条的创建和使用

🚀 个人简介:CSDN「博客新星」TOP 10 , C/C 领域新星创作者💟 作 者:锡兰_CC ❣️📝 专 栏:【OpenCV • c】计算机视觉🌈 若有帮助,还请关注➕点赞➕收藏&#xff…

【Linux网络服务】Nginx Rewrite重写模块

Nginx Rewrite 一、常用的Nginx 正则表达式二、location 匹配的范围2.1location实验 三、rewrite模块3.1rewrite跳转3.2rewrite执行顺3.3flag标记说明3.4rewrite中常用的全局变量3.5rewrite实验3.5.1 基于域名的跳转3.5.2基于客户端IP访问跳转3.5.3基于旧域名跳转到新域名后面加…

基于深度学习的高精度海洋生物检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度海洋生物检测识别系统可用于日常生活中检测与定位海洋生物目标(海胆:echinus,海参:holothurian,扇贝:scallop,海星:starfish)&…

MySQL数据库 番外.聚合函数

前言: 聚合函数是分组查询中一个重要的组成部分,想要利用分组查询,就要对聚合函数有不错的掌握,因此我们在这里开一篇番外,讲解SQL语法中的聚合函数 聚合函数: 聚合函数是SQL中一种特殊的函数,…

Oracle中的数据导出(4)

目录 法一:使用SQL plus命令脚本 法二:使用PLSQL Developer工具 前几篇文章描述了如何将Oracle中的数据导出到库外,但是导出的数据结果都是文本文档,这样页面查看不和谐,编辑又略显麻烦。因此这篇文章将描述如何将Or…