HTTP 请求/响应报文结构
解释 HTTP 请求和响应报文的结构及其组成部分。
HTTP 报文是在客户端与服务器间传输数据的基本单元,分为两类:请求报文(客户端发出)和 响应报文(服务器回复)。结构均由 首部
(headers)和 主体
(body)组成,以空行分隔。核心组件如下:
一、HTTP 请求报文结构
- 请求行(Request Line):
- 包含空格分隔的三个字段:请求方法(如 GET、POST)、资源 URI 和协议版本。
- 示例:
GET /index.html HTTP/1.1
- HTTP 方法解释:
GET
: 获取资源POST
: 提交数据PUT
: 更新资源DELETE
: 删除资源
HTTP/1.1 必须在首部包含 Host 字段
- 请求头部(Headers):
- Key-value 格式,每个字段占一行,描述请求信息如
Content-Type
或Authorization
。 - 示例:
Host: www.example.com User-Agent: Chrome/123 Accept: application/json
- Key-value 格式,每个字段占一行,描述请求信息如
- 空行:
- 必需,标记首部结束。
- 请求体(Body – 可选):
- 用于携带如表单或 JSON 数据,通常用于 POST/PUT 方法。
二、HTTP 响应报文结构
- 状态行(Status Line):
- 包含空格分隔的三个字段:协议版本、状态码和状态短语。
- 示例:
HTTP/1.1 200 OK
- 响应头部(Headers):
- 描述响应信息如
Server
或Content-Length
。 - 示例:
Server: Apache/2.4 Content-Type: text/html
- 描述响应信息如
- 空行:
- 同上,必需。
- 响应体(Body – 可选):
- 包含返回数据,如 HTML 文档或 API 响应。
关键扩展技术点
- 压缩传输:使用
Content-Encoding: gzip/deflate
减小体积提高效率。 - 分块传输:通过
Transfer-Encoding: chunked
将大文件分段发送。 - 范围请求:请求头加入
Range: bytes=start-end
,支持断点续传(如状态码206
)。