理解Cookie 和 Session 的工作流程

news2024/11/16 17:52:20

又是一年初,首先祝大家新年快乐!!!

Cookie

什么是Cookie?

由于HTTP是一种无状态的协议, 服务器单从网络连接上是无法知道用户身份的. 这时候服务器就需要给客户端发一个cooki, 用来确认用户的身份.

简单的来说, cookie就是客户端保存用户信息的一种机制, 用来记录用户的一些信息.

找到Cookie

  1. 例如我们打开百度网站.

  1. 点击这个锁🔒

  1. 点击Cookie, 就可以看到此时正在使用的Cookie

Cookie的构成

服务器端向客户端发送Cookie是通过HTTP响应报文实现的,在Set-Cookie中设置需要向客户端发送的cookie,cookie格式如下:

下图是MDN里的.

例如:

Set-Cookie: "name=value;domain=.domain.com;path=/;expires=Sat, 20 May 2022 5:20:00 GMT;HttpOnly;secure"

其中, name=value是必须的, 其他是不必要的.

name是唯一确定的Cookie名称, value是储存在cookie中的字符串值, domain表示cookie对于那个域是有效的, path表示cookie影响到的路径, expires是失效时间, max-age是用来告诉浏览器cookie啥时候过期, HttpOnly是告知浏览器不允许通过脚本去更改值, secure是安全标志只有在SSL链接时才能发送到服务器.

Cookie的特点

Cookie不提供修改, 删除操作.

如果要修改某个Cookie, 只需要新建一个同名的Cookie, 添加到response中覆盖原来的Cookie

如果要删除某个Cookie, 只需要新建一个同名的Cookie, 并将maxAge设置为0, 并添加到response中覆盖原来的Cookie. 注意是0而不是负数. 负数代表其他的意义

Session

什么是Session?

Session是另一种记录客户状态的机制, 不同的是Cookie保存在浏览器中, 而Session保存在服务器上.客户端浏览器访问服务器的时候, 服务器把用户信息记录在服务器上.

客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了.

Session的工作步骤

因为Http协议是无状态的, Session不能依据Http连接来判断是否为同一个用户. 所以服务器向用户的浏览器发送一个名为JESSIONID的Cookie, 它的值是Session的id值. 这个id可以让Session依据Cookie来识别是否是同一个用户.

  1. 产生SessionID

  1. 保存SessionID

  1. 使用Session

Cookie和Session的区别

  • Cookie数据存放在客户端, Session数据放在服务器上

  • Cookie的安全性一般, 他人可通过分析存放在本地的Cookie并进行Cookie欺骗, 就不安全,所以一般选择Session更好. 重要交互信息比如权限等就要放在Session中, 一般的信息记录放Cookie中.

  • Session会在一定时间内保存在服务器上, 当访问增多, 会比较占用你服务器的性能考虑到减轻服务器性能方面, 应当使用Cookie.

  • Session 的运行依赖SessionID, 而 SessionID 是存在 Cookie 中的, 那么也就是说, 如果浏览器禁用了 Cookie, Session 也会失效 (但是可以通过其它方式实现, 比如在 url 中传递 SessionID, 也就是地址重写).

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

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

相关文章

基于JAVA的数据可视化分析平台,自由制作任何您想要的数据看板,支持接入SQL、CSV、Excel、HTTP接口、JSON等

数据可视化分析平台 自由制作任何您想要的数据看板 简介 DataGear是一款数据可视化分析平台,自由制作任何您想要的数据看板,支持接入SQL、CSV、Excel、HTTP接口、JSON等多种数据源。 完整代码下载地址:基于JAVA的数据可视化分析平台&…

Python模块与包(八)

python学习之旅(八) 👍查看更多可以关注查看首页或点击下方专栏目录 一.模块 (1) 什么是模块 一个Python文件,以.py 结尾,能定义函数,类和变量,也能包含可执行的代码 作用:我们可以认为不同的模块就是不同工具包,每一个工具包中都有各种不同的工具(如函…

Vue初识系列【2】

一 Vue入门 1.1 Vue简介 Vue 是一套用于构建用户界面的渐进式框架,发布于 2014 年 2 月。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库(如&a…

ZYNQ printk 缓冲区读取

之前调试kenel ,如果kenenl崩溃会,通过内核system.map定位log_buf变量地址,给cpu复位,在u-boot中读取对应的物理地址,即可知道最终内核崩溃最后打出的消息。 我在使用 5.4.154这个内核版本,中没有log_buf这…

金蝶附件上传接口开发思路

1️⃣需求描述:需要通过调用金蝶API接口实现指定单据的附件上传。本文以收料通知单为例,以Java代码示例进行讲解。 tips:阅读本文开始前,希望你是一名开发者同时阅读过: https://vip.kingdee.com/article/872325739310…

【小知识点】为爬虫训练场项目添加 Bootstrap5 时间轴

爬虫训练场建站时间轴:https://pachong.vip/timeline 背景 为了便于记录爬虫训练场项目更新日志,所以集成该功能,实现效果如下所示。 特别备注一下,时间轴是什么? 时间轴是一种常用的网站布局元素,通常用…

Forexclub:特斯拉四季度交付车辆创纪录,你认为2023年特斯拉销量如何

周一特斯拉宣布其2022年第四季度交付了创纪录的405278辆汽车。这一数字创下了该公司的纪录,但低于华尔街的估计。据报道,报告中对交付量的普遍估计为420760。特斯拉称:“2022年,汽车交付量同比增长40%,达到131万辆。”…

基于Vue和SpringBoot的论文检测系统的设计与实现

作者主页:Designer 小郑 作者简介:Java全栈软件工程师一枚,来自浙江宁波,负责开发管理公司OA项目,专注软件前后端开发(Vue、SpringBoot和微信小程序)、系统定制、远程技术指导。CSDN学院、蓝桥云…

【信息论与编码 沈连丰】第七章:信息率失真理论及其应用

【信息论与编码 沈连丰】第七章:信息率失真理论及其应用第七章 信息率失真理论及其应用7.1 失真函数和平均失真度7.2 信息率失真函数7.3 信息率失真函数R(D)的计算7.4 保真度准则下的信源编码定理7.5 信息率失真函数与信息价值第七章 信息率失真理论及其应用 香农第…

网工、运维必备的免费在线画图工具,真的很好用!

都说一图胜千言,一个IT工程师如果能画的一手好图,无论是在方案选项、还是技术交流,都能快速表达自己的想法,让你的思路更加的直观明了;市面上的制图工具有很多,下面就推荐几款好用且免费的工具,…

SaaS服务最大的优势是哪些?(附免费试用)

SaaS服务十大优势 近些年来,SaaS(Software-as-a-Service)成为整个IT领域中最受欢迎的业务模型之一。由于SaaS的市场每年以近60%的速度增长,因此它正在取代更传统的应用市场,并将在未来几年内成为主导模式。…

【非侵入式负载监测】低采样率电动汽车充电的无训练非侵入式负载监测(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

一、TTY子系统介绍

个人主页:董哥聊技术我是董哥,嵌入式领域新星创作者创作理念:专注分享高质量嵌入式文章,让大家读有所得!文章目录1、TTY介绍2、控制台终端2.1 系统控制台2.2 当前控制台2.3 虚拟控制台3、伪终端4、串口终端5. 其它类型…

《移动安全》(10)Frida第一篇之环境搭建

0x00 前言 Frida是一款轻量级HOOK框架,我们在电脑上安装Frida环境后,还需要将frida-server上传到目标机器上运行(需要Root),通过它来注入进程完成hook操作。本文主要讲述Frida环境的搭建。 0x01 Frida环境搭建 &…

node.js创建网站实例3

node.js访问mysql数据库并把查询结果返回给前端 1.cmd中运行:npm install mysql -s 2.修改api.js的代码 // 1.先引入express模块,express是一个函数 var express require("express") //2.执行express函数;用变量接收express函数…

概论_第2章_重点_随机变量函数的概率分布___定理法和分布函数法的应用

一 定义 概括地说: 随机变量Y是随机变量X的函数。 设g(x) 是一给定的连续函数, 称Yg(X) 为随机变量X的一个函数, Y也是一个随机变量。当X取值 时,Y取值 . ~~~~~~~~~~~~~~ 本文讨论连续型随机变量函数。 定理1: 设X为连续型…

【3.2】Eureka-搭建注册中心/服务注册/服务发现

【3.2】Eureka-搭建注册中心/服务注册/服务发现1 搭建EurekaServer1.1 详细步骤1.2 搭建EurekaServer小结2 服务注册2.1 详细步骤(踩坑点!解决)2.2 模拟多实例部署2.3 服务注册小结3 服务发现3.1 详细步骤4 总结1 搭建EurekaServer 搭建Eure…

2022年,我每天都会用的linux常用命令

作者简介:一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.Linux常用命令 1.Linux命令概述 2.Linux命令的分类 &#…

科研 | 学生研究方向指导 | 技术路线 | 相关学习资源

1. AI某领域 1.1 Python基础 慕课教程:Python 入门语法教程 哔哩哔哩:3小时快速入门Python 1.2 机器学习框架 sklearn框架:菜菜的机器学习sklearn 1.3 深度学习框架 慕课教程:TensorFlow 入门教程 PyTorch官方教程中文版 不…

【回答问题】ChatGPT上线了!给我推荐20个比较流行的AI作画模型!

目录给我推荐20个比较流行的AI作画模型给我推荐20个比较流行的AI作画模型代码给我推荐20个比较流行的AI作画模型 好的,下面是20个比较流行的AI作画模型: DALL-E GAN Deep Dream CycleGAN StyleGAN pix2pix SketchRNN BigGAN ProGAN ESRGAN SPADE BigVA…