Cookie 和 Session 的工作流程

news/2025/1/3 4:17:54/

 

目录

一、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.ppmy.cn/news/1057783.html

相关文章

合肥先进光源高速数据采集网的规划

合肥先进光源束测后台的初步设计,这里的网络相关的部分摘出来换个名字重新整理一下: 合肥光源中,没有把数据量大的设备比如摄像头、示波器规划进单独的网络,所有的设备都直接接入控制网,运行实践的过程中,有…

C语言易忘、易混

C语言易忘 1 printf函数和putchar函数2 scanf函数与getchar函数3 goto语句4 字符数组与字符串区别5 字符串的输入输出5.1 gets()5.2 fgets()5.3 puts()5.4 fputs() 6 main函数与exit函数7 防止头文件重复包含8 字符串处理函数8.1 strcpy()8.2 strncpy()8.3 strcat()8.4 strncat…

LLM Benchmarks - 评估方法套件

LLM Benchmarks - 评估方法套件 常用 LLM 基准: ARC 是一套小学问题。HellaSwag 是对常识的测试。MMLU 是一种多任务指标,涵盖初等数学、美国历史、计算机科学、法律等内容。TruthfulQA 衡量一个模型复制网上常见虚假信息的倾向。

Android获取手机已安装应用列表JAVA实现

最终效果: 设计 实现java代码: //获取包列表private List<String> getPkgList() {List<String> packages new ArrayList<String>();try {//使用命令行方式获取包列表Process p Runtime.getRuntime().exec("pm list packages");//取得命令行输出…

thinkphp开发的在线学习培训考试模拟考试做题练习系统带商城功能证书管理课程系统

thinkphp开发的在线学习培训考试模拟考试做题练习系统带商城功能证书管理课程系统 1、做题界面 2、前端UI的展示 3、带商城购物功能

使用css实现点击切换active效果

不使用js&#xff0c;纯css实现点击切换active样式 一个父盒子中嵌套小标签,横向排列 html <div class"box"><a href"#">选项1</a><a href"#">选项2</a><a href"#">选项3</a><a href&…

WPF如果未定义绑定的属性,程序如何处理

问题&#xff1a;wpf中&#xff0c;<Button IsEnabled"{Binding IsValid1}"></Button>&#xff0c;如果没定义绑定的属性IsValid1&#xff0c;可以正常用吗 解答&#xff1a;在 WPF 中&#xff0c;如果没有定义绑定的属性 IsValid1&#xff0c;会导致绑…

开机自启CPU设置定频

sudo apt-get install expect sudo apt-get install cpufrequtils具体步骤如下&#xff1a; 安装 cpufrequtils 工具 ⚫ sudo apt-get install cpufrequtils ⚫ 需要联网下载修改配置文件 ⚫ sudo vi /etc/init.d/cpufrequtils ⚫ 将 GOVERNOR“ondemand” 改为&#xff1a; &g…