【计算机网络】深入解析 HTTP 请求中的 header 类型:Cookie 的概念、特点和应用场景:登录和用户认证
网络原理— HTTP 请求“报头”(header)
Cookie 是什么
HTTP报头中的Cookie,用大白话来说,就像你
去餐厅吃饭时拿到的一张会员卡
:
初次访问 (清除该网站的所有 Cookie 后重新访问该网站,效果相同):
- 当你第一次访问一个网站(比如某购物网站),
服务器
想记住你(比如你的登录状态、购物车)。- 但服务器
没法直接在你电脑上存东西
,于是它说:“浏览器
,帮我记个小纸条
吧!”这个“小纸条”就是Cookie。
服务员发卡(Set-Cookie):
- 服务器通过HTTP响应的
Set-Cookie
头,把信息塞给浏览器
。比如:
Set-Cookie: user_id=12345; Expires=周五; Secure
- 这相当于
餐厅
给你一张会员卡
,卡上写:“用户ID是12345,有效期到周五,且只能在本店安全通道使用”。
自动出示会员卡(Cookie请求头):
- 之后每次你再访问这个网站,
浏览器会自动在HTTP请求头里带上这个 Cookie
,像进餐厅时主动亮出会员卡。- 服务器一看:“哦,是用户12345,直接显示他的购物车!”
Cookie能存啥:
- 小数据:
- 比如用户名、语言设置、浏览记录。
- 关键ID:
- 比如登录后的会话ID(像会员卡号,服务器靠它查你的详细信息)。
Cookie的安全细节:
- 过期时间:
- 可以是“关浏览器就失效”(会话Cookie),或设定具体日期(比如记住登录30天)。
- Secure:
- 只通过HTTPS加密连接传输(防窃听)。
- HttpOnly:
- 禁止JavaScript读取(防XSS攻击偷Cookie)。
- 作用范围:
- 指定域名(比如只给
.example.com
)和路径(比如/shop
目录下才发送)。
举个实际例子:
- 你登录微博,服务器返回
Set-Cookie: session_id=abc123; HttpOnly; Secure
。- 之后你刷主页、发微博,
浏览器每次请求都悄悄带上
Cookie: session_id=abc123
。- 服务器通过
abc123
查到你是张三,直接展示你的关注和私信。
注意事项:
- Cookie存在你电脑里,别让坏人偷走(比如通过
恶意链接盗取会话Cookie,就能冒充你
)。- 网站要合理设置
Secure
和HttpOnly
,用户也要警惕不明网站。
总结:
Cookie 就是网站让你的浏览器帮忙记的小纸条
,下次访问该网站时自动带上,让服务器认出你。- 它像会员卡、临时身份证,是
维持登录状态、记录偏好的关键工具
,但也要注意安全保管!
Cookie 的特点
Cookie 轻量化与兼容性 |
- 文本格式:
- Cookie以
键值对形式
存储纯文本
,确保跨平台兼容性。
- Cookie以
- 容量限制:
- 单个Cookie大小通常不超过
4KB
,单个域名下Cookie数量受限(如50条),避免过度占用资源。
- 单个Cookie大小通常不超过
Cookie 作用域控制 |
通过Domain
和Path
属性限制Cookie的生效范围:
- Domain:
- 指定 Cookie 可发送的域名;
- 每个
不同的域名
下都可以有不同的 Cookie,不同网站之间的 Cookie 并不冲突;
- Path:
- 限定仅特定路径下的请求携带Cookie(如
/user
路径);
- 限定仅特定路径下的请求携带Cookie(如
Cookie 客户端存储与自动传输 |
- Cookie的核心设计是通过
客户端(浏览器)
存储少量数据
(如用户标识符);
Cookie 中
存储了一个字符串
;
这个数据可能是
客户端(网页)
自行通过JS
写入的;也可能来自于
服务器
(服务器在HTTP响应
的header中,通过Set-Cookie
字段给浏览器返回数据);
我们先打开一个浏览器搜索页面,并且清空 Cookie :
清空 fiddler 中的左侧 HTTP 请求/响应结果,再刷新页面,查看 fiddler 新抓包的请求和响应结果:
我们可以看到,在响应结果
中显示的 Set-Cookie
的 key=value
,和浏览器中的 Cookie
相对应,说明服务器
通过Set-Cookie响应头
设置Cookie:
浏览器在后续请求中自动回传
,形成“请求-响应-携带
”的闭环:
在后续请求中,Cookie 会自动附加到HTTP头部
(Cookie
头)。
cookie 的灵活性 (生命周期管理) |
- 会话Cookie:默认在浏览器关闭后失效。
- 持久Cookie:可以灵活通过
Expires
或Max-Age
设置过期时间,实现长期状态保留(如“记住登录”)。
清除 Cookie 的方法 |
或者
Cookie 的应用场景:登录和用户认证 (以码云为例)
(1)在码云页面上,清除 Cookie
为了方便观察,先清除掉之前登陆的 Cookie ;
在码云页面上,点击 URL 左侧的图标,选择 Cookie
清除 Cookie 后,再次刷新页面,Cookie 会重新从服务器
加载回来:
(2) 登陆操作
登陆请求 |
登陆响应 |
可以看到,响应中包含了3个
Set-Cookie
属性.其中我们重点关注第三个,里面包含了一个
gitee-session-n
这样的属性,属性值是一串很长的加密之后的信息;这个信息就是
用户当前登陆的身份标识
,也称为"令牌(token)
"
(3) 访问其他页面
登陆成功之后,此时可以看到后续访问码云的其他页面 (比如个人主页),请求
中就都会带着刚才获取到的Cookie 信息
请求你中的 Cookie 字段也包含了一个
gitee-session-n
属性,里面的值和刚才服务器返回的值相同;后续只要访问 gitee 这个网站,就会一直带着这个令牌,直到
令牌过期/下次重新登陆
(4) 理解登陆过程
这个过程和
去医院看病
很相似:
到了医院先挂号:挂号时候需要提供身份证,同时得到了一张"就诊卡",这个
就诊卡(sessionId)
就相当于患者的"令牌"
;后续去各个科室进行检查,诊断,开药等操作,都不必再出示身份证了,只要凭就诊卡即可识别出当前患者的身份.
看完病了之后,不想要就诊卡了,就可以注销这个卡;
此时患者的
身份
和就诊卡
的关联就销毁了;(类似于网站的注销操作)又来看病,可以办一张新的就诊卡,此时就得到了一个新的"令牌"
相关文章:

【计算机网络】深入解析 HTTP 请求中的 header 类型:Cookie 的概念、特点和应用场景:登录和用户认证
网络原理— HTTP 请求“报头”(header) Cookie 是什么 HTTP报头中的Cookie,用大白话来说,就像你去餐厅吃饭时拿到的一张会员卡: 初次访问 (清除该网站的所有 Cookie 后重新访问该网站,效果相同): 当你第一次访问一个网…...

LeetCode 解题思路 11(Hot 100)
解题思路: 若相等: 直接返回 true。若当前元素大于目标值: 由于列递增,当前列下方所有元素均大于目标值,故排除该列(向左移动)。若当前元素小于目标值: 由于行递增,当前…...

警惕AI神话破灭:深度解析大模型缺陷与禁用场景指南
摘要 当前AI大模型虽展现强大能力,但其本质缺陷可能引发系统性风险。本文从认知鸿沟、数据困境、伦理雷区、技术瓶颈四大维度剖析大模型局限性,揭示医疗诊断、法律决策等8类禁用场景,提出可信AI建设框架与用户防护策略。通过理论分析与实操案…...

文件系统调用(上) ─── linux第17课
目录 linux 中man 2和man 3的区别 文件内容介绍 C语言文件接口 示例: 输出信息到显示器,你有哪些方法 总结: 系统文件I/O 文件类的系统调用接口介绍 示例 open 函数具体使用哪个,和具体应用场景相关, write read close lseek ,类比C文件相关接…...
go 标准库包学习笔记
本博文包含了go的math,net/http,fmt,io,csv,time.Time,strconv,strings,sync.Pool的学习,笔记多是其实战如何用,而非简单的函数式的讲解,可谓是收藏佳作,不时翻翻。 文章目录 1、math2、net/http3、fmt4、…...

Unity摄像机跟随物体
功能描述 实现摄像机跟随物体,并使物体始终保持在画面中心位置。 实现步骤 创建脚本:在Unity中创建一个新的C#脚本,命名为CameraFollow。 代码如下: using UnityEngine;public class CameraFollow : MonoBehaviour {public Tran…...
线程管理操作
1.创建两个线程,,分支线程1拷贝文件的前一部分,分支线程2拷贝文件的后一部分 #include <head.h>#define SRC_FILE "./1.txt" #define DST_FILE "./2.txt" #define BUFFER_SIZE 4096struct copy_args {long start;l…...

VSCode 2025最新前端开发必备插件推荐汇总(提效指南)
🌟前言: 如果你是一名前端开发工程师,合适的开发工具能大大提高工作效率。Visual Studio Code (VSCode) 凭借其轻量级、高扩展性的特点,已成为众多前端开发者在win系电脑的首选IDE。 名人说:博观而约取,厚积而薄发。—…...

docker不停机部署
背景 最近做大疆项目时,后台更新部署时,机场和无人机就会掉线。设备自动重连注册时间比较长,应用长时间不可用。所以需要灰色发布服务。docker-compose的swarm模式可解决此问题。 服务构建脚本Dockerfile # 使用官方Java基础镜像ÿ…...

鸿蒙应用开发—数据持久化之SQLite
文章目录 SQLite简介创建数据库添加数据查询数据更新数据删除数据升级数据库使用事务参考 SQLite简介 SQLite是一个轻量级关系数据库,占用资源很少,只有几百KB的大小,无需服务器支撑,是一个零配置、事务性的SQL数据库引擎。 相对…...
JSON对象处理工具类
目录 1. 工具类的功能设计 2. 工具类的实现 依赖配置 工具类代码 3. 工具类的使用示例 示例1:美化JSON打印 示例2:从JSON中提取数据 示例3:修改JSON数据 示例4:合并JSON对象 4. 总结 在现代软件开发中,JSON&…...

通义万相 2.1 + 蓝耘算力,AI 视频生成的梦幻组合
在这个科技日新月异的时代,人工智能不断刷新着我们对世界的认知。一次偶然的机会,我借助北京蓝耘科技股份有限公司提供的算力支持,踏上了使用通义万相 2.1 进行 AI 视频生成的奇妙之旅。 目录 1.1初遇蓝耘科技: 1.2通义万相 2.1…...

汽车一键启动按钮更换注意事项
汽车一键启动开关更换教程 一键启动开关是现代汽车中常见的便捷配置,但随着时间的推移,这个部件可能会出现失灵的情况。当一键启动开关发生故障时,许多车主选择自行更换。以下是整理的一键启动开关更换教程: 更换前的准备 选择匹…...
AI系统架构
在AI系统架构中,通常可以分为基础设施层、模型层和应用层。它们分别对应不同的技术和应用场景,具体如下: 1. 基础设施层(Infrastructure Layer) 这是AI系统的底层支持,主要涉及计算资源、存储、网络等基础…...

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_01基础固定表头示例
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_01基础固定表头…...
spring boot3.4.3+MybatisPlus3.5.5+swagger-ui2.7.0
使用 MyBatis-Plus 操作 books 表。我们将实现以下功能: 创建实体类 Book。 创建 Mapper 接口 BookMapper。 创建 Service 层 BookService 和 BookServiceImpl。 创建 Controller 层 BookController。 配置 MyBatis-Plus 和数据库连接。 1. 项目结构 src ├─…...
解决CentOS 8.5被恶意扫描的问题
CentOS 8 官方仓库已停止维护(EOL),导致一些常用依赖包如fail2ban 无法正常安装。 完整解决方案: 一、问题根源 CentOS 8 官方仓库已停更:2021 年底 CentOS 8 停止维护,默认仓库的包可能无法满足依赖关系。EPEL 仓库兼容性:EPEL 仓库可能未适配 CentOS 8.5 的旧版本依赖…...

laravel中 添加公共/通用 方法/函数
一,现在app 下面创建Common目录,然后在创建Common.php 文件 二,修改composer.json文件 添加这个到autoload 中 "files": ["app/Common/Common.php"]"autoload": {"psr-4": {"App\\": &quo…...

在vs中无法用QtDesigner打开ui文件的解决方法
解决方法 右键ui文件,选择打开方式,弹出如下界面。 点击添加,弹出如下界面 点击程序后边的三个点,去电脑查找designer.exe,我的位置为D:\Qt\Qt5.9.9\5.9.9\msvc2015_64\bin\designer.exe。 名称可以自己起一个名字,…...

springboot 文件下载
在springboot中,执行如下代码实现文件下载 GetMapping("/file/download/test")public void Download(HttpServletResponse response){try {String path "XXXXXXXXXXXX";//文件路径File file new File(path);// 读到流中InputStream inputStre…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...

AI语音助手的Python实现
引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...

什么是VR全景技术
VR全景技术,全称为虚拟现实全景技术,是通过计算机图像模拟生成三维空间中的虚拟世界,使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验,结合图文、3D、音视频等多媒体元素…...
用递归算法解锁「子集」问题 —— LeetCode 78题解析
文章目录 一、题目介绍二、递归思路详解:从决策树开始理解三、解法一:二叉决策树 DFS四、解法二:组合式回溯写法(推荐)五、解法对比 递归算法是编程中一种非常强大且常见的思想,它能够优雅地解决很多复杂的…...
ArcPy扩展模块的使用(3)
管理工程项目 arcpy.mp模块允许用户管理布局、地图、报表、文件夹连接、视图等工程项目。例如,可以更新、修复或替换图层数据源,修改图层的符号系统,甚至自动在线执行共享要托管在组织中的工程项。 以下代码展示了如何更新图层的数据源&…...
Java中栈的多种实现类详解
Java中栈的多种实现类详解:Stack、LinkedList与ArrayDeque全方位对比 前言一、Stack类——Java最早的栈实现1.1 Stack类简介1.2 常用方法1.3 优缺点分析 二、LinkedList类——灵活的双端链表2.1 LinkedList类简介2.2 常用方法2.3 优缺点分析 三、ArrayDeque类——高…...