HTTP协议——HTTP 报文

HTTP 报文1、报文流HTTP 报文是在 HTTP 应用程序之间发送的数据块。这些数据块以一些文本形式的元信息开头,这些信息描述了报文的内容以及含义,后面跟着可选的数据部分。这些报文在客户端、服务器和代理之间流动。1.1、报文流入源端服务器HTTP 使用术语流入和流出来描述事务处理的方向。报文流入源端服务器,工作完成后,会流回用户的 Agent 代理中。1.2、报文向下游流动HTTP 报文会像河水一样流动。不管是请求报文还是响应报文,所有报文都会向下游流动。所有报文的发送者都在接受者的上游。
摘要由CSDN通过智能技术生成

HTTP 报文

1、报文流

HTTP 报文是在 HTTP 应用程序之间发送的数据块。这些数据块以一些文本形式的元信息开头,这些信息描述了报文的内容以及含义,后面跟着可选的数据部分。这些报文在客户端、服务器和代理之间流动。

1.1、报文流入源端服务器

HTTP 使用术语流入和流出来描述事务处理的方向。报文流入源端服务器,工作完成后,会流回用户的 Agent 代理中。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xnrkg5fK-1625992071379)(素材/报文流入源端服务器并流回到客户端.png)]

1.2、报文向下游流动

HTTP 报文会像河水一样流动。不管是请求报文还是响应报文,所有报文都会向下游流动。所有报文的发送者都在接受者的上游。


2、报文的组成部分

HTTP 报文是简单的格式化数据块。每条报文都包含一条来自客户端的请求,或者一条来自服务器的响应。它们由三部分组成:对报文进行描述的起始行、包含属性的首部块,以及可选的、包含数据的主体部分

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vBMYd04o-1625992071381)(素材/HTTP报文.png)]

2.1、报文的语法

所有的 HTTP 报文都可以分为两类:请求报文和响应报文。请求报文会向 Web 服务器请求一个动作。响应报文会将请求的结果返回给客户端。请求报文和响应报文的基本报文结构相同。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aIMAMG1B-1625992071382)(素材/包含请求报文和响应报文的HTTP事务.png)]

这是请求报文的格式:

<method> <request-URL> <version>
<headers>

<entity-body>

这是响应报文的格式(注意,只有起始行的语法有所不同):

<version> <status> <reason-phrase>
<headers>

<entity-body>

下面对各部分进行简要描述:

  • 方法(method)

    客户端希望服务器对资源执行的动作。是一个单独的单词,比如 GET、HEAD 或 POST。

  • 请求 URL(request-URL)

    命名了所请求资源,或者 URL 路径组件的完整 URL。

  • 版本(version)

    报文所使用的 HTTP 版本,其格式看起来是这样的:

    HTTP/<major>.<minor>
    
  • 状态码(status-code)

    这三位数字描述了请求过程中所发生的情况。

  • 原因短语(reason-phrase)

    数字状态码的可读版本,包含行终止序列之前的所有文本。

  • 首部(header)

    可以有零个或多个首部,每个首部都包含一个名字,后面跟着一个冒号(:),然后是一个可选的空格,接着是一个值,最后是一个 CRLF。首部是由一个空行(CRLF)结束的,表示了首部列表的结束和实体主体部分的开始。

  • 实体或主体部分(entity-body)

    实体的主体部分包含一个由任意数据组成的数据块。

2.2、起始行

所有的 HTTP 报文都以一个起始行作为开始。请求报文的起始行说明了==要做些什么。响应报文的起始行说明发生了什么==。

2.2.1、请求行

请求报文请求服务器对资源进行一些操作。请求报文的起始行,或称为请求行包含了一个方法和一个请求 URL,这个方法描述了服务器应该执行的操作,请求 URL 描述了要对哪个资源执行这个方法。请求行中还包含 HTTP 的版本,用来告知服务器,客户端使用的是哪种 HTTP。

所有这些字段都由空格符分隔。

2.2.2、响应行

响应报文承载了状态信息和操作产生的所有结果数据,将其返回给客户端。响应报文的起始行,或称为响应行包含了响应报文使用的 HTTP 版本、数字状态码,以及描述操作状态的文本形式的原因短语

所有这些字段都由空格符进行分隔。

2.2.3、方法

请求的起始行以方法作为开始,方法用来告知服务器要做些什么。

方法 说明 是否包含主体
GET 从服务器获取一份文档
HEAD 只从服务器获取文档的首部
POST 向服务器发送需要处理的数据
PUT 将请求的主体部分存储在服务器上
TRACE 对可能经过代理服务器传送到服务器上去的报文进行追踪
OPTIONS 决定可以在服务器上执行哪些方法
DELETE 从服务器上删除一份文档
2.2.4、状态码

方法是用来告诉服务器做什么事情的,状态码则用来告诉客户端,发生了什么事。

整体范围 已定义范围 分类
100 ~ 199 100 ~ 101 信息提示
200 ~ 299 200 ~ 206 成功
300 ~ 399 300 ~ 305 重定向
400 ~ 499 400 ~ 415 客户端错误
500 ~ 599 500 ~ 505 服务器错误

常见的状态码:

状态码 原因说明 含义
200 OK 成功。请求的所有数据都在响应主体中
401 Unauthorized(未授权) 需要输入用户名和密码
404 Not Found(未找到) 服务器无法找到所请求 URL 对应的资源
2.2.5、原因短语

原因短语是响应起始行的最后一个组件。它为状态码提供了文本形式的解释。

2.2.6、版本号

版本号会以 HTTP/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值