北京市网站建设_网站建设公司_网站开发_seo优化
2026/1/16 11:17:44 网站建设 项目流程

HTTP 报文详解

HTTP(Hypertext Transfer Protocol,超文本传输协议)是 Web 通信的基础协议,用于客户端(如浏览器)和服务器之间交换数据。HTTP 报文是 HTTP 协议交互的信息载体,分为两种类型:请求报文(由客户端发送)和响应报文(由服务器返回)。报文是纯文本格式(HTTP/1.1 和早期版本),由 ASCII 字符组成,便于阅读和调试。

HTTP 报文的基本结构相同,由三部分组成:

  • 起始行(Start Line):描述请求或响应的基本信息。
  • 首部字段(Headers):键值对形式,提供元数据(如内容类型、长度、缓存等)。
  • 空行(CRLF):分隔首部和主体,表示首部结束。
  • 主体(Body,可选):实际传输的数据(如 HTML、JSON、图片等)。
1. 请求报文(Request Message)

客户端向服务器请求资源时发送。

格式

<方法> <请求URL> <协议版本> <首部字段名>: <字段值> ... <CRLF> // 空行 <主体数据> // 可选

起始行(Request-Line)

  • 方法(Method):表示对资源的操作。常见方法:

    方法描述是否有主体
    GET获取资源(最常用)
    POST提交数据(如表单)
    PUT上传资源(替换)
    DELETE删除资源
    HEAD只获取响应头(不返回主体)
    OPTIONS查询支持的方法
    TRACE回环测试
    PATCH部分更新资源
  • 请求URL(Request-URI):资源路径,可包含查询参数(如/index.html?id=1)。

  • 协议版本:通常HTTP/1.1HTTP/2(HTTP/2+ 使用二进制帧)。

示例(GET 请求,无主体):

GET /index.html HTTP/1.1 Host: www.example.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Accept: text/html,*/* Accept-Encoding: gzip, deflate Connection: keep-alive

示例(POST 请求,有主体):

POST /login HTTP/1.1 Host: www.example.com Content-Type: application/x-www-form-urlencoded Content-Length: 28 username=admin&password=123
2. 响应报文(Response Message)

服务器处理请求后返回。

格式

<协议版本> <状态码> <原因短语> <首部字段名>: <字段值> ... <CRLF> // 空行 <主体数据> // 可选

起始行(Status-Line)

  • 协议版本:同上。

  • 状态码(Status Code):三位数字,表示结果。

    分类代码范围描述常见示例
    1xx100-101信息提示100 Continue
    2xx200-206成功200 OK, 204 No Content
    3xx300-307重定向301 Moved Permanently, 304 Not Modified
    4xx400-451客户端错误400 Bad Request, 404 Not Found, 403 Forbidden
    5xx500-505服务器错误500 Internal Server Error, 503 Service Unavailable
  • 原因短语(Reason Phrase):人类可读描述,如 “OK”。

示例(成功响应):

HTTP/1.1 200 OK Date: Mon, 06 Jan 2026 12:00:00 GMT Server: Apache/2.4.51 Content-Type: text/html; charset=UTF-8 Content-Length: 1234 Connection: keep-alive <html><body>Hello World!</body></html>

示例(404 错误):

HTTP/1.1 404 Not Found Content-Type: text/html Content-Length: 256 <html><body><h1>404 Not Found</h1></body></html>
3. 首部字段(Headers)

首部是键值对,提供附加信息。分为:

  • 通用首部:请求和响应均可(如 Date、Connection)。
  • 请求首部:如 Host、User-Agent、Accept、Cookie。
  • 响应首部:如 Server、Location(重定向)、Set-Cookie。
  • 实体首部:描述主体,如 Content-Type、Content-Length、Content-Encoding(gzip)。

常见首部:

首部示例值描述
Hostwww.example.com主机名(虚拟主机必需)
Content-Typetext/html; charset=utf-8主体类型
Content-Length1234主体长度
Connectionkeep-alive连接类型(长连接)
Cache-Controlno-cache缓存控制
Cookiesession=abc123客户端发送 Cookie
Set-Cookiesession=abc123; Expires=…服务器设置 Cookie
4. 注意事项与扩展
  • 空行:必须有,用于分隔首部和主体。没有主体时,直接以空行结束。
  • 主体传输:使用 Content-Length 或 Transfer-Encoding: chunked(分块传输)。
  • HTTP 版本差异:HTTP/1.1 支持长连接(keep-alive);HTTP/2+ 使用二进制帧,更高效,但语义相同(RFC 9110 定义最新语义)。
  • 工具查看:浏览器 DevTools(Network 标签)、Wireshark、curl、Postman。
  • 安全:HTTPS 在 TLS 层加密报文。

HTTP 报文简单却强大,是理解 Web 工作的关键。如果需要特定示例、某个首部的深入解释或 HTTP/2+ 差异,欢迎继续提问!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询