第6章——HTTP首部

news/2025/1/10 6:52:40 标签: http, 网络, 网络协议
http://www.w3.org/2000/svg" style="display: none;">

第六章——HTTP首部

HTTP报文结构

都必有报文首部

HTTP请求报文

https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=D%3A%5Cmd%E7%AC%94%E8%AE%B0%5C%E6%88%91%E7%9A%84%E7%AC%94%E8%AE%B0%5Cassets%5C%E8%AF%B7%E6%B1%82%E6%8A%A5%E6%96%87.png&pos_id=img-lxd7Ndoz-1736243330757" alt="外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传" />

HTTP响应报文

https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=C%3A%5CUsers%5Cmxs%5CAppData%5CLocal%5CTemp%5C1734485085623.png&pos_id=img-1sKqbEa8-1736243330757" alt="外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传" />

HTTP首部字段

###传递重要信息

https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=D%3A%5Cmd%E7%AC%94%E8%AE%B0%5C%E6%88%91%E7%9A%84%E7%AC%94%E8%AE%B0%5Cassets%5C1734487685185.png&pos_id=img-93SFvMgZ-1736243330758" alt="外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传" />

首部字段结构

​ 首部字段名:字段值(,字段值,字段值)

首部字段类型

​ 通用首部字段
请求首部字段:补充请求的附加内容、客户端信息、响应内容相关优先级等信息。
响应首部字段:补充响应的附加内容,也会要求客户端附加额外的内容信息。
实体首部字段:针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的信息。

非首部字段

​ 如Cookie、Set-Cookie和Content-Disposition等

End-to-end 首部和Hop-by-hop 首部

特性端到端首部(End-to-End)逐跳首部(Hop-by-Hop)
作用范围客户端和最终服务器之间当前节点与下一个节点之间
传递方式必须转发,保留完整性不会转发,会被中间节点消费或删除
缓存行为缓存代理需保留这些首部缓存代理不会保留,或需要处理后丢弃
是否需标记无需特别标记,默认会传递到最终服务器必须用 Connection 标记为逐跳字段
例子AuthorizationCache-ControlConnection、Keep-Alive

通用首部字段

Cache-Control——操作缓存的工作机制

https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=D%3A%5Cmd%E7%AC%94%E8%AE%B0%5C%E6%88%91%E7%9A%84%E7%AC%94%E8%AE%B0%5Cassets%5C%E9%A6%96%E9%83%A8%E5%AD%97%E6%AE%B5.png&pos_id=img-RcZt2nW8-1736243330758" alt="外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传" />

表示是否能缓存的指令:

​ Cache-Control: public——其他用户也可利用缓存

​ Cache-Control: privat——响应只以特定的用户作为对象

https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=D%3A%5Cmd%E7%AC%94%E8%AE%B0%5C%E6%88%91%E7%9A%84%E7%AC%94%E8%AE%B0%5Cassets%5C1734487151985.png&pos_id=img-3Gg3TRTB-1736243330758" alt="外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传" />

​ Cache-Control: no-cache——防止从缓存中返回过期的资源

https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=D%3A%5Cmd%E7%AC%94%E8%AE%B0%5C%E6%88%91%E7%9A%84%E7%AC%94%E8%AE%B0%5Cassets%5C1734487654528.png&pos_id=img-QvbquOPv-1736243330758" alt="外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传" />

控制可执行缓存的对象的指令

​ Cache-Control: no-store——包含机密信息,缓存不能在本地存储请求或响应的任一部分

指定缓存期限和认证的指令

​ Cache-Control: s-maxage=604800(单位:秒)——功能和max-age 指令的相同,但只适用于供多位用户使用的公共缓存服务器,使用s-maxage指令后,则直接忽略对Expires首部字段及max-age 指令的处理

​ Cache-Control: max-age=604800(单位:秒)——请求中包含max-age指令时,如果判定缓存资源的缓存时间数值比指定时间的数值更小,那么客户端就接收缓存的资源。(当指定max-age值为0,那么缓存服务器通常需要将请求转发给源服务器) ;响应中包含max-age指令时,缓存服务器将不对资源的有效性再作确认,而max-age数值代表资源保存为缓存的最长时间。

https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=D%3A%5Cmd%E7%AC%94%E8%AE%B0%5C%E6%88%91%E7%9A%84%E7%AC%94%E8%AE%B0%5Cassets%5C1734488059699.png&pos_id=img-ffqRpznH-1736243330758" alt="外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传" />

​ Cache-Control: min-fresh=60(单位:秒)——缓存服务器返回至少还未过指定时间的缓存资源

https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=D%3A%5Cmd%E7%AC%94%E8%AE%B0%5C%E6%88%91%E7%9A%84%E7%AC%94%E8%AE%B0%5Cassets%5C1734488113291.png&pos_id=img-m8Z3KqT4-1736243330758" alt="外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传" />

​ Cache-Control: max-stale=3600(单位:秒)——即使过期也照常接收

​ Cache-Control: only-if-cached——缓存服务器不重新加载响应,也不会再次确认资源有效性,若发生请求缓存服务器的本地缓存无响应,则返回状态码504 Gateway Timeout

​ Cache-Control: must-revalidate——向源服务器再次验证即将返回的响应缓存目前是否仍然有效。 若代理无法连通源服务器再次获取有效资源的话,缓存必须给客户端一条504(Gateway Timeout)状态码。使用must-revalidate 指令会忽略请求的max-stale指令

​ Cache-Control: proxy-revalidate——所有的缓存服务器在接收到客户端带有该指令的请求返回响应之前,必须再次验证缓存的有效性。

​ Cache-Control: no-transform——无论是在请求还是响应中,缓存都不能改变实体主体的媒体类型,防止压缩

Cache-Control 扩展

​ Cache-Control: private, community=“UCI”——扩展Cache-Control 首部字段内的指令

Connection

控制不再转发给代理的首部字段

​ Connection: 不再转发的首部字段名(即Hop-by-hop首部)

https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=D%3A%5Cmd%E7%AC%94%E8%AE%B0%5C%E6%88%91%E7%9A%84%E7%AC%94%E8%AE%B0%5Cassets%5C1734488525661.png&pos_id=img-m3nyV6Kh-1736243330758" alt="外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传" />

管理持久连接

​ Connection: close——服务器端想明确断开连接

https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=D%3A%5Cmd%E7%AC%94%E8%AE%B0%5C%E6%88%91%E7%9A%84%E7%AC%94%E8%AE%B0%5Cassets%5C1734488825023.png&pos_id=img-wKYejQDb-1736243330758" alt="外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传" />

​ Connection: Keep-Alive——在旧版本的HTTP协议上维持持续连接

https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=D%3A%5Cmd%E7%AC%94%E8%AE%B0%5C%E6%88%91%E7%9A%84%E7%AC%94%E8%AE%B0%5Cassets%5C1734488868698.png&pos_id=img-MKodXrJQ-1736243330758" alt="外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传" />

### Date——表明创建HTTP报文的日期和时间

https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=D%3A%5Cmd%E7%AC%94%E8%AE%B0%5C%E6%88%91%E7%9A%84%E7%AC%94%E8%AE%B0%5Cassets%5C1734489043427.png&pos_id=img-ltpalIVC-1736243330758" alt="外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传" />

Pragma——只用在客户端发送的请求中,客户端要求所有的中间服务器不返回缓存的资源。

https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=D%3A%5Cmd%E7%AC%94%E8%AE%B0%5C%E6%88%91%E7%9A%84%E7%AC%94%E8%AE%B0%5Cassets%5C1734489105025.png&pos_id=img-w7xmO05O-1736243330758" alt="外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传" />

Trailer——说明在报文主体后记录了哪些首部字段

https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=D%3A%5Cmd%E7%AC%94%E8%AE%B0%5C%E6%88%91%E7%9A%84%E7%AC%94%E8%AE%B0%5Cassets%5C1734489142597.png&pos_id=img-Ut1UW62A-1736243330758" alt="外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传" />

###Transfer-Encoding——规定了传输报文主体时采用的编码方式

https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=D%3A%5Cmd%E7%AC%94%E8%AE%B0%5C%E6%88%91%E7%9A%84%E7%AC%94%E8%AE%B0%5Cassets%5C1734489170968.png&pos_id=img-MIJrKbVM-1736243330758" alt="外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传" />

### Upgrade——检测HTTP协议及其他协议是否可使用更高的版本进行通信,其参数值可以用来指定一个完全不同的通信协议

https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=D%3A%5Cmd%E7%AC%94%E8%AE%B0%5C%E6%88%91%E7%9A%84%E7%AC%94%E8%AE%B0%5Cassets%5C1734489382440.png&pos_id=img-Az8CiGxY-1736243330758" alt="外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传" />

### Via——追踪客户端与服务器之间的请求和响应报文的传输路径

https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=D%3A%5Cmd%E7%AC%94%E8%AE%B0%5C%E6%88%91%E7%9A%84%E7%AC%94%E8%AE%B0%5Cassets%5C1734489413121.png&pos_id=img-q2dt5M0L-1736243330758" alt="外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传" />

Warning——告知用户一些与缓存相关的问题的警告

请求首部字段

太多了不写了,实践中遇到了自己查

响应首部字段

太多了不写了,实践中遇到了自己查

实体首部字段

太多了不写了,实践中遇到了自己查

为Cookie服务的首部字段

https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=D%3A%5Cmd%E7%AC%94%E8%AE%B0%5C%E6%88%91%E7%9A%84%E7%AC%94%E8%AE%B0%5Cassets%5C1734489763878.png&pos_id=img-IVaFKREQ-1736243330758" alt="外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传" />

Set-Cookie

https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=D%3A%5Cmd%E7%AC%94%E8%AE%B0%5C%E6%88%91%E7%9A%84%E7%AC%94%E8%AE%B0%5Cassets%5C1734489892437.png&pos_id=img-Af8GJdHC-1736243330758" alt="外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传" />

https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=D%3A%5Cmd%E7%AC%94%E8%AE%B0%5C%E6%88%91%E7%9A%84%E7%AC%94%E8%AE%B0%5Cassets%5C1734489924226.png&pos_id=img-lL3e4KcV-1736243330758" alt="外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传" />

Cookie

其他首部字段

​ HTTP 首部字段是可以自行扩展的,在Web服务器和浏览器的应用上,会出现各种非标准的首部字段。

图片转存中…(img-Af8GJdHC-1736243330758)]

[外链图片转存中…(img-lL3e4KcV-1736243330758)]

Cookie

其他首部字段

​ HTTP 首部字段是可以自行扩展的,在Web服务器和浏览器的应用上,会出现各种非标准的首部字段。


http://www.niftyadmin.cn/n/5818306.html

相关文章

Springboot Rabbitmq + 线程池技术控制指定数量task执行

定义DataSyncTaskManager,作为线程池任务控制器 package org.demo.scheduletest.service;import lombok.extern.slf4j.Slf4j;import java.util.concurrent.BlockingQueue; import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingQueu…

线性表的接口定义及使用

定义接口 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace _001_线性表 {interface IListDS<T>//定义接口{int GetLength();void Clear();bool IsEmpty();void Add(T item);void Inser…

Linux自定义分隔符

在 Shell 脚本中&#xff0c;delimiteraa 这种语法的意思是将字符串 aa 赋值给变量 delimiter。这里的 aa 只是一个普通的字符串&#xff0c;作为分隔符 (delimiter) 用来在脚本中作为自定义的分隔符。 解释 delimiter: 这是一个变量名。 aa: 这是一个字符串&#xff0c;包含…

详解Sonar与Jenkins 的集成使用!

本文阅读前提 本文假设读者熟悉Jenkins和SonarQube的基础操作。 核心实现功能 Jenkins中运行的job来调用SonarScanner&#xff0c;最后可实现测试结果与SonarQube中同步查看。 Jenkins中安装Sonar相关插件 配置Sonarqube Dashboard>Manage Jenkins>Systems 指定son…

基于mybatis-plus历史背景下的多租户平台改造

前言 别误会&#xff0c;本篇【并不是】 要用mybatis-plus自身的多租户方案&#xff1a;在表中加一个tenant_id字段来区分不同的租户数据。并不是的&#xff01; 而是在假设业务系统已经使用mybatis-plus多数据源的前提下&#xff0c;如何实现业务数据库隔开的多租户系统。 这…

有关Redis的相关概述

一、Redis概述 1.1 Redis简介 Redis是一个开源的高性能键值对数据库&#xff0c;使用C语言编写&#xff0c;支持多种数据结构&#xff0c;如字符串&#xff08;String&#xff09;、列表&#xff08;List&#xff09;、哈希&#xff08;Hash&#xff09;、集合&#xff08;Set…

一文讲清计算机中的镜像,以及其在计算机中的作用

一、什么是计算机中的镜像 在计算机中&#xff0c;镜像&#xff08;Computer Image&#xff09;是对系统、磁盘、光盘或应用程序的完整复制或备份&#xff0c;它包含了所有的数据、文件系统、配置和应用程序。镜像技术广泛应用于系统备份、恢复、数据迁移、虚拟化以及软件部署…

9.4 visualStudio 2022 配置 cuda 和 torch (c++)

一、配置torch 1.Libtorch下载 该内容看了【Libtorch 一】libtorchwin10环境配置_vsixtorch-CSDN博客的博客&#xff0c;作为笔记用。我自己搭建后可以正常运行。 下载地址为windows系统下各种LibTorch下载地址_libtorch 百度云-CSDN博客 下载解压后的目录为&#xff1a; 2.vs…