# 第三章 HTTP 报文

HTTP/1.1 以及更早的 HTTP 协议报文都是语义可读的。在 HTTP/2 中,这些报文被嵌入到了一个新的二进制结构,帧。帧允许实现很多优化,比如报文头部的压缩和复用。即使只有原始 HTTP 报文的一部分以 HTTP/2 发送出来,每条报文的语义依旧不变,客户端会重组原始 HTTP/1.1 请求。因此用 HTTP/1.1 格式来理解 HTTP/2 报文仍旧有效。

# 报文结构

【报文首部】

服务器端或者客户端需处理的请求或响应的内容

【CR+LF】

【报文主体】

应被发送的数据

# 请求报文

1

原图来自:https://mdn.mozillademos.org/files/13687/HTTP_Request.png

# 响应报文

2

原图来自:https://mdn.mozillademos.org/files/13691/HTTP_Response.png

# 请求方式

HTTP 定义了一组请求方法,以表明要对给定资源执行的操作。指示针对给定资源要执行的期望动作。虽然他们也可以是名词, 但这些请求方法有时被称为 HTTP 动词。每一个请求方法都实现了不同的语义

告知服务器意图的 HTTP 方法
GET 获取资源
POST 传输实体的主题
PUT 传输文件(存在安全问题)
HEAD 获得报文首部
DELETE 删除文件(存在安全问题)
OPTIONS 询问支持的方法
TRACE 追踪路径(存在安全问题)
CONNECT 要求用隧道协议连接代理
LINK/UNLINE 建立/断开连接关系

# 响应首部字段

服务端使用首部字段Accept-Ranges

Accept-Ranges: bytes
ETag: "25e-4d2c3145df440-gzip"