# 第三章 HTTP 报文
HTTP/1.1 以及更早的 HTTP 协议报文都是语义可读的。在 HTTP/2 中,这些报文被嵌入到了一个新的二进制结构,帧。帧允许实现很多优化,比如报文头部的压缩和复用。即使只有原始 HTTP 报文的一部分以 HTTP/2 发送出来,每条报文的语义依旧不变,客户端会重组原始 HTTP/1.1 请求。因此用 HTTP/1.1 格式来理解 HTTP/2 报文仍旧有效。
# 报文结构
【报文首部】
服务器端或者客户端需处理的请求或响应的内容
【CR+LF】
【报文主体】
应被发送的数据
# 请求报文
原图来自:https://mdn.mozillademos.org/files/13687/HTTP_Request.png
# 响应报文
原图来自: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"