Cookie 和 Session 的工作流程

目录
一、Cookie是什么?
二、Session是什么?
三、Cookie的工作流程
四、Session的工作流程
五、Session和Cookie的区别和联系
一、Cookie是什么?
- Cookie是一种在网站和用户之间交换信息的机制。它是由Web服务器发送给用户浏览器的小型文本文件,存储在用户的设备上。当用户访问网站时,浏览器会将Cookie保存在用户的设备上,并在以后的访问中将该Cookie发送回服务器。
- Cookie可以用来存储用户的偏好设置、登录状态、购物车内容等信息。网站可以通过读取Cookie来识别用户,并为用户提供个性化的体验。例如,网站可以根据Cookie中的信息记住用户喜欢的语言、颜色主题或其他个性化设置。
- 然而,Cookie也有一些隐私和安全方面的顾虑。某些Cookie可能会跟踪用户的浏览活动,并在用户离开网站后继续跟踪用户。为了保护用户隐私,现代浏览器通常提供选项,允许用户控制哪些Cookie可以被接受或拒绝,并允许用户删除现有的Cookie。
二、Session是什么?
Session指的是在服务器端维护的一种基于会话的状态。与Cookie不同的是,Session中存储着服务器和客户端交互过程中的一些数据,这些数据被存储在服务器上,而不是客户端(如浏览器)上。当用户在浏览器中访问一个需要用户登录的网站时,服务器会创建一个Session,并在Session中存储用户相关的数据,比如用户ID等。然后,服务器会为该Session生成一个唯一的标识符,它会在响应中以Cookie的形式返回到浏览器中。每次用户与服务器交互时,浏览器都会将包含Session ID的Cookie发送回服务器,这样服务器就能够识别是哪个用户发出的请求,并从对应的Session中取出相关数据。通过Session,网站可以实现更复杂的功能,比如购物车、登录状态维护等等。
三、Cookie的工作流程
Cookie是在客户端(如浏览器)中存储的一小段文本信息,它的工作流程如下:
- 客户端向服务器发送请求。
- 服务器根据请求中的信息来生成响应内容,并在响应头中设置Cookie。
- 客户端接收到响应,并将Cookie保存在本地。在浏览器中,Cookie通常被存储在内存中或硬盘上,具体存储方式取决于浏览器的设置。
- 在下一次客户端向服务器发送请求时,浏览器会自动将保存的Cookie信息添加到请求头中,然后发送给服务器。
- 服务器接收到请求,并根据请求头中的Cookie信息来识别客户端的身份。
- 如果服务器需要向客户端发送Cookie,就在响应头中设置Cookie信息。

通过这个过程,服务器和客户端可以通过Cookie来进行交互并保持状态,比如实现记住登录状态、在线购物车等功能。
四、Session的工作流程
Session是一种在服务器端存储用户状态信息的机制,它的工作流程如下:
- 客户端向服务器发送请求。
- 服务器接收到请求时,创建一个唯一的Session ID,将该ID存储在服务器端的内存或数据库中,并在响应头中设置一个名为“Set-Cookie”的HTTP头部,其中包含该Session ID。
- 客户端接收到响应,将Session ID保存在本地,通常是存储在Cookies中,也可以使用URL重定向方式进行传递。
- 在下一次客户端向服务器发送请求时,浏览器会自动将保存的Session ID添加到请求头中,然后发送给服务器。
- 服务器接收到请求时,会根据Session ID找到相应的Session对象,其中包含了之前保存的用户状态信息。
- 服务器使用Session对象中的信息来完成客户端的请求,并将响应发送回客户端。
- 当用户关闭浏览器时,Session ID会自动过期,服务器会自动删除相应的Session对象。
Session对象由服务器端创建,并生成一个sessionID。
sessionID,是一个唯一的、不容易找到规律的字符串。
一般情况下,服务器会在一定时间内(默认30分钟)保存这个 Session,过了时间限制,就会销毁这个Session。
通过这个过程,服务器可以在多次请求之间保持用户状态信息,并且只需将Session ID传递给客户端,用户的敏感信息不需要暴露在客户端中。
五、Session和Cookie的区别和联系
Cookie和Session都是Web应用程序中常用的用户状态管理机制,它们的区别如下:
1. 数据存储位置:
Cookie的数据存储在客户端,通常是浏览器中的文件中,而Session的数据存储在服务器端,通常是存储在内存或数据库中。
2. 数据存储方式:
Cookie的数据存储方式是键值对,可以存储在客户端;而Session的数据存储方式也是键值对,但是存储在服务器端。
3. 安全性:
Cookie存在客户端,容易遭到攻击,而Session存在服务器端,相对安全。
4. 生命周期:
Cookie可以设置失效时间,可以在不同的时间段内保持有效;而Session的生命周期由服务器控制,通常在用户关闭浏览器时自动失效。
5. 数据存储量:
由于Cookie数据存储在客户端,因此Cookie的存储容量有限,一般只能存储4KB左右的数据;而Session存储在服务器端,没有存储容量限制。
综上所述,Cookie适用于存储一些简单的用户状态信息,如用户名、密码等;而Session适用于存储一些需要保密,或者存储量比较大的用户状态信息,如用户的购物车、订单信息等。

相关文章:
Cookie 和 Session 的工作流程
目录 一、Cookie是什么? 二、Session是什么? 三、Cookie的工作流程 四、Session的工作流程 五、Session和Cookie的区别和联系 一、Cookie是什么? Cookie是一种在网站和用户之间交换信息的机制。它是由Web服务器发送给用户浏览器的小型文本文件ÿ…...
AutoSAR配置与实践(基础篇)3.6 BSW的WatchDog功能
3.6 BSW的WatchDog功能 一、WatchDog功能介绍1.1 WatchDog 模块组成1.2 内外部看门狗区别和原理1.3 常见看门狗校验方式一、WatchDog功能介绍 1.1 WatchDog 模块组成 WatchDog 即看门狗功能。这个看门狗不是真正看家的狗,而是软件的一个模块,但是因为功能类似故以此起名。主…...
运维高级第6次作业
1.安装docker服务,配置镜像加速器 Docker安装与镜像加速器配置_ZRSAI的博客-CSDN博客 2.下载系统镜像(Ubuntu、 centos) 执行该命令后,Docker会自动从Docker Hub镜像库中下载Ubuntu镜像,并将其保存到本地计算机上: [ro…...
MongoDB使用GridFS存储大数据(Java)
MongoDB 是一个灵活的 NoSQL 数据库,能够存储大量的数据。但是,当涉及到特别大的数据项,比如大文件、视频或大型图片时,MongoDB 提供了一个特殊的方法来存储这些数据:GridFS。 简介: 1. 什么是 GridFS&am…...
内网穿透实战应用-windwos10系统搭建我的世界服务器,内网穿透实现联机游戏Minecraft
文章目录 1. Java环境搭建2.安装我的世界Minecraft服务3. 启动我的世界服务4.局域网测试连接我的世界服务器5. 安装cpolar内网穿透6. 创建隧道映射内网端口7. 测试公网远程联机8. 配置固定TCP端口地址8.1 保留一个固定tcp地址8.2 配置固定tcp地址 9. 使用固定公网地址远程联机 …...
pytorch基于ray和accelerate实现多GPU数据并行的模型加速训练
在pytorch的DDP原生代码使用的基础上,ray和accelerate两个库对于pytorch并行训练的代码使用做了更加友好的封装。 以下为极简的代码示例。 ray ray.py #codingutf-8 import os import sys import time import numpy as np import torch from torch import nn im…...
[蓝帽杯 2022 初赛]domainhacker
打开流量包,追踪TCP流,看到一串url编码 放到瑞士军刀里面解密 最下面这一串会觉得像base64编码 删掉前面两个字符就可以base64解码 依次类推,提取到第13个流,得到一串编码其中里面有密码 导出http对象 发现最后有个1.rar文件 不出…...
在 Pytorch 中使用 TensorBoard
机器学习的训练过程中会产生各类数据,包括 “标量scalar”、“图像image”、“统计图diagram”、“视频video”、“音频audio”、“文本text”、“嵌入Embedding” 等等。为了更好地追踪和分析这些数据,许多可视化工具应运而生,比如之前介绍的…...
Grafana Dashboard 备份方案
文章目录 Grafana Dashboard 备份方案引言工具简介支持的组件要求配置备份安装使用 pypi 安装grafana备份工具配置环境变量使用Grafana Backup Tool 进行备份恢复备份 Grafana Dashboard恢复 Grafana Dashboard结论Grafana Dashboard 备份方案 引言 每个使用 Grafana 的同学都…...
opencv-疲劳检测-眨眼检测
#导入工具包 from scipy.spatial import distance as dist from collections import OrderedDict import numpy as np import argparse import time import dlib import cv2FACIAL_LANDMARKS_68_IDXS OrderedDict([("mouth", (48, 68)),("right_eyebrow",…...
2023-08-24力扣每日一题
链接: 1267. 统计参与通信的服务器 题意: 同行同列可以发生通信,求能发生通信的机器数量 解: 标记每行/每列的机器个数即可 实际代码: #include<bits/stdc.h> using namespace std; class Solution { pub…...
蚂蚁数科持续发力PaaS领域,SOFAStack布局全栈软件供应链安全产品
8月18日,记者了解到,蚂蚁数科再度加码云原生PaaS领域,SOFAStack率先完成全栈软件供应链安全产品及解决方案的布局,包括静态代码扫描Pinpoint、软件成分分析SCA、交互式安全测试IAST、运行时防护RASP、安全洞察Appinsight等&#x…...
Java后端开发面试题——消息中间篇
RabbitMQ-如何保证消息不丢失 交换机持久化: Bean public DirectExchange simpleExchange(){// 三个参数:交换机名称、是否持久化、当没有queue与其绑定时是否自动删除 return new DirectExchange("simple.direct", true, false); }队列持久化…...
C++ Windows API IsDebuggerPresent的作用
IsDebuggerPresent 是 Windows API 中的一个函数,它用于检测当前运行的程序是否正在被调试。当程序被如 Visual Studio 这样的调试器附加时,此函数会返回 TRUE;否则,它会返回 FALSE。 这个函数经常被用在一些安全相关的场景或是防…...
【JVM 内存结构 | 程序计数器】
内存结构 前言简介程序计数器定义作用特点示例应用场景 主页传送门:📀 传送 前言 Java 虚拟机的内存空间由 堆、栈、方法区、程序计数器和本地方法栈五部分组成。 简介 JVM(Java Virtual Machine)内存结构包括以下几个部分&#…...
华为云Stack的学习(一)
一、华为云Stack架构 1.HCS 物理分散、逻辑统一、业务驱动、运管协同、业务感知 2.华为云Stack的特点 可靠性 包括整体可靠性、数据可靠性和单一设备可靠性。通过云平台的分布式架构,从整体系统上提高可靠性,降低系统对单设备可靠性的要求。 可用性…...
人类反馈强化学习RLHF;微软应用商店推出AI摘要功能
🦉 AI新闻 🚀 微软应用商店推出AI摘要功能,快速总结用户对App的评价 摘要:微软应用商店正式推出了AI摘要功能,该功能能够将数千条在线评论总结成一段精练的文字,为用户选择和下载新应用和游戏提供参考。该…...
day1:前端缓存问题
❝ 「目标」: 持续输出!每日分享关于web前端常见知识、面试题、性能优化、新技术等方面的内容。篇幅不会过长,方便理解和记忆。 ❞ ❝ 「主要面向群体:」前端开发工程师(初、中、高级)、应届、转行、培训等同学 ❞ Day…...
学习网络编程No.4【socket编程实战】
引言 北京时间:2023/8/19/23:01,耍了好几天,主要归咎于《我欲封天》这本小说,听了几个晚上之后逐渐入门,在闲暇时间又看了一下,小高潮直接来临,最终在三个昼夜下追完了,哈哈哈&…...
HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 四)
Observed装饰器和ObjectLink装饰器:嵌套类对象属性变化 上文所述的装饰器仅能观察到第一层的变化,但是在实际应用开发中,应用会根据开发需要,封装自己的数据模型。对于多层嵌套的情况,比如二维数组,或者数…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
