HTTP协议结构详解
HTTP协议结构详解
SitaoHTTP协议主要由请求(Request)和响应(Response)两部分组成,每部分都包含三个主要组成部分。下面是详细说明:
HTTP请求(Request)
1. 请求行(Request Line)
1 | GET /api/users HTTP/1.1 |
包含三个元素:
- 请求方法:GET、POST、PUT、DELETE等
- 请求路径:/api/users
- HTTP协议版本:HTTP/1.1
2. 请求头(Request Headers)
1 | Host: www.example.com |
- 包含请求的附加信息
- 采用键值对形式
- 常见请求头包括:
- Host:指定服务器的域名
- User-Agent:客户端信息
- Content-Type:请求体的数据类型
- Accept:客户端期望接收的数据类型
3. 请求体(Request Body)
1 | { |
- 可选部分,并不是所有请求都有请求体
- 通常在POST、PUT等方法中使用
- 数据格式由Content-Type指定
- 常见格式包括:
- application/json
- application/x-www-form-urlencoded
- multipart/form-data
- application/xml
HTTP响应(Response)
1. 响应行(Status Line)
1 | HTTP/1.1 200 OK |
包含三个元素:
- HTTP协议版本:HTTP/1.1
- 状态码:200、301、404、500等
- 状态描述:OK、Not Found、Internal Server Error等
2. 响应头(Response Headers)
1 | Content-Type: application/json |
- 包含响应的附加信息
- 采用键值对形式
- 常见响应头包括:
- Content-Type:响应体的数据类型
- Content-Length:响应体的长度
- Cache-Control:缓存控制
- Set-Cookie:设置Cookie
3. 响应体(Response Body)
响应体可以包含多种类型的内容,每种类型都有其对应的Content-Type:
3.1 文本类型
- HTML (text/html)
1 | <html> |
- JSON (application/json)
1 | { |
- XML (application/xml)
1 | <user> |
- 纯文本 (text/plain)
1 | Hello World |
3.2 二进制类型
图片
- image/jpeg
- image/png
- image/gif
- image/webp
- image/svg+xml
音频
- audio/mpeg
- audio/wav
- audio/ogg
视频
- video/mp4
- video/webm
- video/ogg
文档
- application/pdf
- application/msword
- application/vnd.openxmlformats-officedocument.wordprocessingml.document
其他二进制
- application/octet-stream(通用二进制数据)
- application/zip(压缩文件)
- application/x-www-form-urlencoded(表单数据)
重要注意事项
分隔符
- 请求头和请求体之间必须有一个空行
- 响应头和响应体之间必须有一个空行
- 这些空行是协议规范的一部分
Content-Type
- 必须准确指定请求体和响应体的数据格式
- 影响数据的解析方式
- 可以包含字符集信息,如:Content-Type: text/html; charset=utf-8
编码
- 请求和响应都需要考虑字符编码
- 通常使用UTF-8编码
- 二进制数据可能需要进行Base64编码
大小限制
- 服务器通常会对请求体大小有限制
- 大文件传输需要考虑分块处理
- 可以使用压缩算法减小传输大小
示例
完整的HTTP请求示例:
1 | POST /api/users HTTP/1.1 |
完整的HTTP响应示例:
1 | HTTP/1.1 200 OK |