HTTP报文是什么

2023-05-16

📢📢如果说http是因特网的信使,那么http报文就是他用来送信的包裹了

(1)📚什么是报文

在度娘的介绍中

📣报文(message)是网络中交换与传输的数据单元,即站点一次性要发送的数据块。报文包含了将要发送的完整的数据信息,其长短很不一致,长度不限且可变。

也就是说http报文是在http应用程序之间发送的数据块,,它包裹着我们进行请求数据交换的信息✔。

(2)📚报文的组成部分

📃2.1 报文基本结构

http报文是简单的格式化数据块,它有三个部分组成。对报文进行描述的起始行(start line)、包含属性的首部(header)、以及可选的包含数据的主体(body)部分,主体部分可以包含文本或二进制数据也可以为空。

举个栗子🌰,如图所示,这里列举了一个服务端响应的报文
image.png

📊在这张图中,首部给出了一些与主体信息有关的信息。Content-Type行说明了主体是纯文本文档text/plainContent-Length行说明了当前主体的大小16个字节。

📃2.2 报文的分类

所有的HTTP报文都可以分为两类,请求报文(request message)响应报文(response message)。请求报文由客户端向服务器发出,响应报文由服务器响应客户端返回响应结果。虽然有区别,但是两种报文的结构是相同的,都是由起始行、首部、主体三部分组成。

📒请求报文的格式

<method> <request-URL> <versin>
<header>
<entity-body>

📒响应报文的格式(只有起始行是不同的)

<versin> <status> <reason-phrase>
<header>
<entity-body>
  • 请求方法(method)
    客户端对服务端发起请求的方式,比如get、post、put等
  • 请求URL(request-URL)
    请求服务器资源的url路径
  • 版本(versin)
    报文所使用的http的版本
  • 状态码(status-code)
    这三位数字描述了请求过程中所发生的情况。
  • 原因短语(reason-phrase)
    数字状态码的可读版本,比如上面例子中的OK
  • 首部(header)
    可以有零个或者多个首部,每个首部都包含一个名字。
  • 实体的主体部分(entity-body)
    包含一个由任意数据组成的数据块

image.png

(3)📚请求报文支持的各种方法

请求的起始行以方法作为开始,方法使用来告知服务器要做些什么。但值得注意的是并不是每个服务器都实现了所有方法,这些限制通常都是在服务器的配置中进行设置的,因此会随着站点和服务器的不同而有所不同。

image.png
此图来自菜鸟驿站

📃3.1 GET请求

主要用于向指定的URL(URI)请求资源(资源文件或是数据均可), 可以带参数也可以不带参数, 带参数时,参数是明文传递,你可以在浏览器的地址栏中看到参数名及参数值,get安全性不高,所以常用于安全性要求低的场合, 比如登录后请求数据。

📃3.2 HEAD请求

HEAD 请求和 GET请求很类似,都是从服务器获取资源,但是服务器在响应中并不会返回主体,只返回首部。服务器开发者必须确保返回的首部和GET请求返回的首部是完全相同的

HEAD请求常常被忽略,但是能提供很多有用的信息,特别是在有限的速度和带宽下,使用HEAD请求,可以:

1、只请求资源的首部;

2、检查超链接的有效性、以及最近是否更新;

3、通过查看首部,检查网页是否被修改;

4、多用于自动搜索机器人获取网页的标志信息,获取rss种子信息,或者传递安全认证信息等

📃3.3 POST请求

在Http请求里post是其中比较常用的提交数据的请求方式, POST方法起初是用来向服务器输入数据的。实际上,我们通常会用它来提交form表单。

📃3.4 PUT请求

PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。

📃3.5 DELETE请求

DELETE请求顾名思义,就是用来删除某一个资源的,该请求就像数据库的delete操作。

📃3.6 CONNECT请求

connect在网页开发中不会使用到, connect的作用就是将服务器作为代理,让服务器代替用户去访问其他网页(说白了,就是翻墙),之后将数据返回给用户。

📃3.7 OPTIONS请求

OPTIONS请求web服务器告知其支持的各种功能。可以询问服务器支持哪些方法,或者对某些特殊资源支持哪些方法,这就为客户端提供了一种手段,使其不用访问那些资源就可以知道访问这种资源最优的方式,仅作查询使用。
简而言之,OPTIONS请求方法的主要用途有两个:

  1. 获取服务器支持的HTTP请求方法;

  2. 用来检查服务器的性能。

🙄其实在实际开发中我们可能经常有见到OPTIONS请求,因为在某些情况下,普通的get或者post请求回首先自动发起一次options请求,当options请求成功返回后,真正的ajax请求才会再次发起。
那么是哪些情况会发起OPTIONS请求呢?

  1. 跨域请求,非跨域请求不会出现options请求
  2. 自定义请求头
  3. 请求头中的content-type是application/x-www-form-urlencoded,multipart/form-data,text/plain之外的格式

📃3.8 TRACE请求

TRACE方法允许客户端在最终将请求发送给服务器时看一看它变成什么样子了,因为当客户端发送一个请求时,这个请求可能要穿过防火墙、代理、网关或者其他的应用程序,每个中间节点都有可能修改原始的http请求。

TRACE方法主要用来诊断,当然他也有缺点,
TRACE方法是HTTP(超文本传输)协议定义的一种协议调试方法,该方法使得服务器原样返回任何客户端请求的内容(可能会附加路由中间的代理服务器的信息),由于该方法原样返回客户端提交的任意数据,因此,可用来进行跨站脚本(XSS)攻击,这种攻击方式又称为跨站跟踪攻击(XST)。

📃3.9 PATCH请求

HTTP中为了提高交互操作性与防止错误,确实需要一种新的修改方法,而PUT方法已经被定义为用一个请求体去修改一个完整的资源。并且不能重复做部分更改,否则代理和缓存、甚至服务器或者客户端都会得到有问题的操作结果。

至此,PATCH方法有了被完全定义的必要。

PATCH在请求中定义了一个描述修改的实体集合,如果被请求修改的资源不存在,服务器可能会创建一个新的资源。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTP报文是什么 的相关文章

随机推荐

  • OSPF详解(5种包和状态机)

    1 OSPF的数据包 xff08 5种 xff09 Hello xff1a 发现建立并周期保护邻居关系 DBD xff1a 数据库描述包 进行主从关系的选举 xff0c 最重要的作用是发送LSDB目录 LSR xff1a 链路状态请求 对收
  • BGP—origin属性的应用

    BGP origin属性 1 origin 是公认必遵属性 公认必遵 xff1a 只要不人为修改 xff0c 该属性就不会自己改变 origin属性描述该路由是如何成为BGP路由的 符号作用i通过network生成的BGP路由 xff1f
  • MPLS-虚拟专用网 实验(分支之间可以互通)

    1 MPLS V P N实验 xff08 分支之间可以互通 xff09 实验要求 xff1a 1 A1和A2可以通过MPLS V P N打通 xff0c B1和B2可以打通 xff0c A不能访问B 2 R2为ISP 3 R6可以telne
  • vmware ESXi中安装windows11(解决VMware安装Windows11报错+win11跳过联网操作)

    文章目录 vmware ESxi 安装windows111 安装步骤2 Vmware安装win11报错解决方案2 1 问题产生原因 xff1a 2 2 解决方案 xff1a 3 Windows11安装过程中跳过联网操作 xff08 在无法连
  • python 修改ip地址

    安装包 pip install wmi pip install pywin32 实现 import wmi Obtain network adaptors configurations nic configs 61 wmi WMI Win3
  • Postman前置脚本-全局变量和环境变量

    全局变量和环境变量 61 61 全局变量和环境变量 61 61 Postman 请求前置脚本时间戳案例工作原理 全局变量和环境变量 全局变量 概念 xff1a 在 Postman 全局生效的变量 xff0c 全局唯一 设置 xff1a 代码
  • kubernetes❀集群环境搭建

    kubernetes 集群环境搭建 2 kubernetes集群环境搭建2 1 前置知识点2 2 kubeadm 部署方式介绍2 3 安装要求2 4 最终目标2 5 准备环境2 6 环境初始化2 6 1 检查操作系统的版本2 6 2 主机名
  • kubernetes❀资源管理

    kubernetes 资源管理 3 资源管理3 1 资源管理介绍3 2 YAML语言介绍3 3 资源管理方式3 3 1 命令式对象管理3 3 2 命令式对象配置3 3 3 声明式对象配置 3 资源管理 3 1 资源管理介绍 在kuberne
  • Kubernetes❀实战入门

    Kubernetes 实战入门 4 实战入门4 1 Namespace4 1 1 查看 4 1 2 创建 4 1 3 删除 4 1 4 配置方式 4 2 Pod4 2 1 创建并运行4 2 2 查看pod信息4 2 3 访问Pod4 2 4
  • Qt重定向问题

    概念 在我们使用软件时大多使用release版本 xff0c 这样在使用过程中的调试信息就不会显示出来 xff0c 为了将调试信息打印在界面上或者放在文件中保存起来我们就可以使用重定向的技术 在QT的帮助文档 xff1a qInstallM
  • VSUDP通信

    好久没弄VS的UDP通信了 xff0c 使用方式都忘记的差不多了 今天遇到了正好学习一下 UDP理论 xff1a UDP参考链接 xff1a socket函数 为了执行网络输入输出 xff0c 一个进程必须做的第一件事就是调用socket函
  • sockaddr_in结构体的说明(成员:sin_family、sin_addr、sin_zero)

    sockaddr in是系统封装的一个结构体 xff0c 具体包含了成员变量 xff1a sin family sin addr sin zero 这个结构体被封装在ws2def h中 xff0c 具体的代码如下 xff1a typedef
  • 字节、位与二进制表示

    前言 仅针对JAVA xff0c 总结几个知识点 字节与位 1字节 xff08 byte xff09 61 8位 xff08 bit xff09 每个bit位非0即1 xff0c 即二进制表达中的0或1 xff0c 0001中每个 0 和
  • windows配置tensorflow python object detection 环境

    option 1 pip install lt binary gt pip install upgrade https storage googleapis com tensorflow mac cpu tensorflow 1 12 0
  • 顺序表递增有序,插入元素x后仍递增有序

    思想 xff1a 1 xff09 先找到x元素的插入位置 xff08 顺序表从左到右依次比较 xff0c 若A元素大于x元素 xff0c 那么x元素插入的位置就是A元素所在的位置 xff09 2 xff09 将A元素所在的位置的元素以及它之
  • 猜数游戏,系统想一个数,我们来猜

    span class token macro property span class token directive keyword include span span class token string lt stdio h gt sp
  • 输入多个数(输入-1为结束标志),计算这多个数的平均数

    span class token macro property span class token directive keyword include span span class token string lt stdio h gt sp
  • 计算n的阶乘

    在 include span class token operator lt span stdio span class token punctuation span h span class token operator gt span
  • 判断一个数是否是素数

    span class token macro property span class token directive keyword include span span class token string lt stdio h gt sp
  • HTTP报文是什么

    x1f4e2 x1f4e2 如果说http是因特网的信使 xff0c 那么http报文就是他用来送信的包裹了 1 x1f4da 什么是报文 在度娘的介绍中 x1f4e3 报文 message 是网络中交换与传输的数据单元 xff0c 即站点