当前位置: 首页 > news >正文

【计算机网络】深入解析 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,就能冒充你)。
  • 网站要合理设置SecureHttpOnly,用户也要警惕不明网站。

总结

  • Cookie 就是网站让你的浏览器帮忙记的小纸条,下次访问该网站时自动带上,让服务器认出你。
  • 它像会员卡、临时身份证,是维持登录状态、记录偏好的关键工具,但也要注意安全保管!

Cookie 的特点


Cookie 轻量化与兼容性

在这里插入图片描述

  • 文本格式
    • Cookie以键值对形式存储纯文本,确保跨平台兼容性。
  • 容量限制
    • 单个Cookie大小通常不超过4KB,单个域名下Cookie数量受限(如50条),避免过度占用资源。

在这里插入图片描述


Cookie 作用域控制

通过DomainPath属性限制Cookie的生效范围:


  • Domain
    • 指定 Cookie 可发送的域名;
    • 每个不同的域名下都可以有不同的 Cookie,不同网站之间的 Cookie 并不冲突;

  • Path
    • 限定仅特定路径下的请求携带Cookie(如/user路径);

在这里插入图片描述


Cookie 客户端存储与自动传输

  • Cookie的核心设计是通过客户端(浏览器)存储少量数据(如用户标识符);

Cookie 中存储了一个字符串

  • 这个数据可能是客户端(网页)自行通过 JS 写入的;

  • 也可能来自于服务器(服务器在HTTP响应的header中,通过Set-Cookie字段给浏览器返回数据);


我们先打开一个浏览器搜索页面,并且清空 Cookie :

在这里插入图片描述


清空 fiddler 中的左侧 HTTP 请求/响应结果,再刷新页面,查看 fiddler 新抓包的请求和响应结果:

在这里插入图片描述


我们可以看到,在响应结果中显示的 Set-Cookiekey=value,和浏览器中的 Cookie 相对应,说明服务器通过Set-Cookie响应头设置Cookie:

在这里插入图片描述


浏览器在后续请求中自动回传,形成“请求-响应-携带”的闭环:

在这里插入图片描述

在后续请求中,Cookie 会自动附加到HTTP头部Cookie头)。


cookie 的灵活性 (生命周期管理)

  • 会话Cookie:默认在浏览器关闭后失效。
  • 持久Cookie:可以灵活通过ExpiresMax-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) 理解登陆过程


在这里插入图片描述


在这里插入图片描述

这个过程和去医院看病很相似:

  1. 到了医院先挂号:挂号时候需要提供身份证,同时得到了一张"就诊卡",这个就诊卡(sessionId)就相当于患者的"令牌"

  2. 后续去各个科室进行检查,诊断,开药等操作,都不必再出示身份证了,只要凭就诊卡即可识别出当前患者的身份.

  3. 看完病了之后,不想要就诊卡了,就可以注销这个卡;

  4. 此时患者的身份就诊卡的关联就销毁了;(类似于网站的注销操作)

  5. 又来看病,可以办一张新的就诊卡,此时就得到了一个新的"令牌"


在这里插入图片描述

在这里插入图片描述

相关文章:

【计算机网络】深入解析 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.创建两个线程&#xff0c;&#xff0c;分支线程1拷贝文件的前一部分&#xff0c;分支线程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最新前端开发必备插件推荐汇总(提效指南)

&#x1f31f;前言: 如果你是一名前端开发工程师&#xff0c;合适的开发工具能大大提高工作效率。Visual Studio Code (VSCode) 凭借其轻量级、高扩展性的特点&#xff0c;已成为众多前端开发者在win系电脑的首选IDE。 名人说&#xff1a;博观而约取&#xff0c;厚积而薄发。—…...

docker不停机部署

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

鸿蒙应用开发—数据持久化之SQLite

文章目录 SQLite简介创建数据库添加数据查询数据更新数据删除数据升级数据库使用事务参考 SQLite简介 SQLite是一个轻量级关系数据库&#xff0c;占用资源很少&#xff0c;只有几百KB的大小&#xff0c;无需服务器支撑&#xff0c;是一个零配置、事务性的SQL数据库引擎。 相对…...

JSON对象处理工具类

目录 1. 工具类的功能设计 2. 工具类的实现 依赖配置 工具类代码 3. 工具类的使用示例 示例1&#xff1a;美化JSON打印 示例2&#xff1a;从JSON中提取数据 示例3&#xff1a;修改JSON数据 示例4&#xff1a;合并JSON对象 4. 总结 在现代软件开发中&#xff0c;JSON&…...

通义万相 2.1 + 蓝耘算力,AI 视频生成的梦幻组合

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

汽车一键启动按钮更换注意事项

汽车一键启动开关更换教程 一键启动开关是现代汽车中常见的便捷配置&#xff0c;但随着时间的推移&#xff0c;这个部件可能会出现失灵的情况。当一键启动开关发生故障时&#xff0c;许多车主选择自行更换。以下是整理的一键启动开关更换教程&#xff1a; 更换前的准备 选择匹…...

AI系统架构

在AI系统架构中&#xff0c;通常可以分为基础设施层、模型层和应用层。它们分别对应不同的技术和应用场景&#xff0c;具体如下&#xff1a; 1. 基础设施层&#xff08;Infrastructure Layer&#xff09; 这是AI系统的底层支持&#xff0c;主要涉及计算资源、存储、网络等基础…...

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_01基础固定表头示例

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_01基础固定表头…...

spring boot3.4.3+MybatisPlus3.5.5+swagger-ui2.7.0

使用 MyBatis-Plus 操作 books 表。我们将实现以下功能&#xff1a; 创建实体类 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中 添加公共/通用 方法/函数

一&#xff0c;现在app 下面创建Common目录&#xff0c;然后在创建Common.php 文件 二&#xff0c;修改composer.json文件 添加这个到autoload 中 "files": ["app/Common/Common.php"]"autoload": {"psr-4": {"App\\": &quo…...

在vs中无法用QtDesigner打开ui文件的解决方法

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

springboot 文件下载

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

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...