上一篇
HTTP消息结构
- 行业动态
- 2025-04-29
- 2028
HTTP消息分请求与响应,含起始行、头部、主体,请求含方法/URL/版本,响应含状态码/短语,均
HTTP请求消息结构
HTTP请求消息由4部分组成,具体结构如下:
组成部分 | 说明 |
---|---|
起始行 | 包含请求方法(GET/POST等)、URL路径、HTTP协议版本 |
请求头部 | 键值对形式的元信息(如Host、User-Agent、Content-Type) |
空行 | 分隔头部和消息体的CRLF(` |
`) | |
消息体 | 可选部分,用于携带POST/PUT等方法的数据 |
示例(GET请求)
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html
(空行)
HTTP响应消息结构
HTTP响应消息同样由4部分组成:
组成部分 | 说明 |
---|---|
起始行 | 包含HTTP版本、状态码(如200)、状态描述 |
响应头部 | 键值对形式的元信息(如Content-Type、Set-Cookie) |
空行 | 分隔头部和消息体的CRLF(` |
`) | |
消息体 | 可选部分,返回的资源内容(如HTML、JSON) |
示例(200响应)
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234
Server: nginx
<!DOCTYPE html>...(HTML内容)
关键字段解析
字段 | 作用 | 常见值 |
---|---|---|
Host | 指定服务器域名/IP | www.example.com |
Content-Type | 描述消息体MIME类型 | text/html / application/json |
Content-Length | 消息体字节长度 | 1234 |
Connection | 控制连接特性(如keep-alive) | keep-alive / close |
相关问题与解答
问题1:如何判断HTTP消息是否包含消息体?
解答:
- 请求:当方法为
POST
、PUT
、PATCH
或DELETE
且带有数据时,消息体存在。 - 响应:当状态码为
200
、4xx
、5xx
且返回资源时(如HTML、JSON),消息体存在。 - 标志:头部
Content-Length
或Transfer-Encoding: chunked
表明有消息体。
问题2:HTTP头部字段Host
的作用是什么?
解答:Host
字段用于指定服务器的域名或IP地址,解决以下问题:
- 虚拟主机支持:同一IP可托管多个域名(如
www.a.com
和www.b.com
)。 - 路由匹配:服务器根据
Host
值确定处理请求的虚拟站点配置。 - 安全验证:防止