Cookie 和 Session 的工作流程

 

目录

一、Cookie是什么?

二、Session是什么?

三、Cookie的工作流程

四、Session的工作流程

五、Session和Cookie的区别和联系

一、Cookie是什么?

  1. Cookie是一种在网站和用户之间交换信息的机制。它是由Web服务器发送给用户浏览器的小型文本文件,存储在用户的设备上。当用户访问网站时,浏览器会将Cookie保存在用户的设备上,并在以后的访问中将该Cookie发送回服务器。
  2. Cookie可以用来存储用户的偏好设置、登录状态、购物车内容等信息。网站可以通过读取Cookie来识别用户,并为用户提供个性化的体验。例如,网站可以根据Cookie中的信息记住用户喜欢的语言、颜色主题或其他个性化设置。
  3. 然而,Cookie也有一些隐私和安全方面的顾虑。某些Cookie可能会跟踪用户的浏览活动,并在用户离开网站后继续跟踪用户。为了保护用户隐私,现代浏览器通常提供选项,允许用户控制哪些Cookie可以被接受或拒绝,并允许用户删除现有的Cookie。

二、Session是什么?

Session指的是在服务器端维护的一种基于会话的状态。与Cookie不同的是,Session中存储着服务器和客户端交互过程中的一些数据,这些数据被存储在服务器上,而不是客户端(如浏览器)上。当用户在浏览器中访问一个需要用户登录的网站时,服务器会创建一个Session,并在Session中存储用户相关的数据,比如用户ID等。然后,服务器会为该Session生成一个唯一的标识符,它会在响应中以Cookie的形式返回到浏览器中。每次用户与服务器交互时,浏览器都会将包含Session ID的Cookie发送回服务器,这样服务器就能够识别是哪个用户发出的请求,并从对应的Session中取出相关数据。通过Session,网站可以实现更复杂的功能,比如购物车、登录状态维护等等。

三、Cookie的工作流程

Cookie是在客户端(如浏览器)中存储的一小段文本信息,它的工作流程如下:

  1. 客户端向服务器发送请求。
  2. 服务器根据请求中的信息来生成响应内容,并在响应头中设置Cookie。
  3. 客户端接收到响应,并将Cookie保存在本地。在浏览器中,Cookie通常被存储在内存中或硬盘上,具体存储方式取决于浏览器的设置。
  4. 在下一次客户端向服务器发送请求时,浏览器会自动将保存的Cookie信息添加到请求头中,然后发送给服务器。
  5. 服务器接收到请求,并根据请求头中的Cookie信息来识别客户端的身份。
  6. 如果服务器需要向客户端发送Cookie,就在响应头中设置Cookie信息。

通过这个过程,服务器和客户端可以通过Cookie来进行交互并保持状态,比如实现记住登录状态、在线购物车等功能。

四、Session的工作流程

Session是一种在服务器端存储用户状态信息的机制,它的工作流程如下:

  1. 客户端向服务器发送请求。
  2. 服务器接收到请求时,创建一个唯一的Session ID,将该ID存储在服务器端的内存或数据库中,并在响应头中设置一个名为“Set-Cookie”的HTTP头部,其中包含该Session ID。
  3. 客户端接收到响应,将Session ID保存在本地,通常是存储在Cookies中,也可以使用URL重定向方式进行传递。
  4. 在下一次客户端向服务器发送请求时,浏览器会自动将保存的Session ID添加到请求头中,然后发送给服务器。
  5. 服务器接收到请求时,会根据Session ID找到相应的Session对象,其中包含了之前保存的用户状态信息。
  6. 服务器使用Session对象中的信息来完成客户端的请求,并将响应发送回客户端。
  7. 当用户关闭浏览器时,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适用于存储一些需要保密,或者存储量比较大的用户状态信息,如用户的购物车、订单信息等。

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【填坑向】MySQL常见报错及处理系列(ERROR! The server quit without updating PID file)

本系列其他文章 【填坑向】MySQL常见报错及处理系列(Communications link failure & Access denied for user ‘root‘‘localhost‘)_AQin1012的博客-CSDN博客翻一下大致的意思就是默认会按照如下的顺序读取配置文件,我上面贴出的配置文…

elementUI moment 年月日转时间戳 时间限制

changeStartTime(val){debuggerthis.startT val// this.startTime parseInt(val.split(-).join())this.startTime moment(val).unix() * 1000 //开始时间毫秒if(this.endTime){this.endTime moment(this.endT).unix() * 1000 //结束时间毫秒if(this.startTime - this.endTi…

tensorRT安装

官方指导文档:Installation Guide :: NVIDIA Deep Learning TensorRT Documentation 适配很重要!!!! 需要cuda, cuDNN, tensorRT三者匹配。我的cuda11.3 所以对应的cuDNN和tensorRT下载的是如下版本: cud…

lab6 cow

task cow的目标就是延迟分配,并且直到必须要复制的时候才会分配物理内存 cow的fork只为child创造了一个页表,其中的PTE指向了父进程的物理页面cow的fork将父进程和孩子进程的用户态的PTE都标记为不可写当某个进程想要去写一个cow的页面时,c…

uniapp微信小程序点击右上角菜单分享功能权限配置

个人项目地址: SubTopH前端开发个人站 (自己开发的前端功能和UI组件,一些有趣的小功能,感兴趣的伙伴可以访问,欢迎提出更好的想法,私信沟通,网站属于静态页面) SubTopH前端开发个人站…

农业水价综合改革系统主要组成

一、系统概述 农业水价改革灌区信息化系统主要由感知采集层、网络传输层、系统应用层等部分组成。通过无线技术、感知层技术与新型应用的有效结合,可以用于各种业务的传送,充分满足灌区监测站间的物与物互联,农业生产的自动化和信息化相结合。…

设计模式之门面模式(Facade)的C++实现

1、门面模式提出 在组件的开发过程中,某些接口之间的依赖是比较紧密的,如果某个接口发生变化,其他的接口也会跟着发生变化,这样的代码违背了代码的设计原则。门面设计模式是在外部客户程序和系统程序之间添加了一层中间接口&…

使用Termux在安卓手机上搭建Hexo博客网站,并发布到公网访问

文章目录 1. 安装 Hexo2. 安装cpolar内网穿透3. 公网远程访问4. 固定公网地址 Hexo 是一个用 Nodejs 编写的快速、简洁且高效的博客框架。Hexo 使用 Markdown 解析文章,在几秒内,即可利用靓丽的主题生成静态网页。 下面介绍在Termux中安装个人hexo博客并…

nginx代理webSocket链接响应403

一、场景 使用nginx代理webSocket链接,nginx响应403 1、nginx访问日志响应403 [18/Aug/2023:09:56:36 0800] "GET /FS_WEB_ASS/webim_api/socket/message HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit…

在Linux系统上安装和配置Redis数据库,无需公网IP即可实现远程连接的详细解析

文章目录 1. Linux(centos8)安装redis数据库2. 配置redis数据库3. 内网穿透3.1 安装cpolar内网穿透3.2 创建隧道映射本地端口 4. 配置固定TCP端口地址4.1 保留一个固定tcp地址4.2 配置固定TCP地址4.3 使用固定的tcp地址连接 Redis作为一款高速缓存的key value键值对的数据库,在…

从零开始的Hadoop学习(一) | 大数据概念、特点、应用场景、发展前景

1. 大数据概念 大数据(Big Data):指 无法在一定时间范围 内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的 海量、高增长率和多样化 的 信息资产。 大数据主要解决,海量…

vue项目配置git提交规范

vue项目配置git提交规范 一、背景介绍二、husky、lint-staged、commitlint/cli1.husky2.lint-staged3.commitlint/cli 三、具体使用1.安装依赖2.运行初始化脚本3.在package.json中配置lint-staged4.根目录新增 commitlint.config.js 4.提交测试1.提示信息格式错误时2.eslint校验…