news 2026/5/30 22:55:23

HTTP报文详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HTTP报文详解

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+ 差异,欢迎继续提问!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/30 17:59:00

C# 里弹出“确定”“取消”对话框

C# 中弹出“确定”“取消”对话框的几种常用方法 C# 中最常用、最简单的弹出“确定/取消”对话框就是使用 MessageBox 类&#xff08;位于 System.Windows.Forms 命名空间&#xff09;。以下是详细说明和示例。 方法一&#xff1a;最常用 - MessageBox.Show&#xff08;推荐&…

作者头像 李华
网站建设 2026/5/30 17:58:20

Java常用的日期和时间格式化转换符

Java 中常用的日期和时间格式化转换符大全 Java 中日期和时间的格式化主要通过以下两个类实现&#xff1a; 旧 API&#xff08;Java 8 之前&#xff09;&#xff1a;java.text.SimpleDateFormat新 API&#xff08;Java 8 推荐&#xff09;&#xff1a;java.time.format.DateT…

作者头像 李华
网站建设 2026/5/28 12:29:05

保姆级教程:Spring AI RAG知识库构建,让你的AI助手“满腹经纶“!

当用户提问&#xff1a;“有哪些优惠券&#xff1f;” 。 RAG 工程会去查询本地向量数据库中的相关数据&#xff0c;然后将这部分数据 用户问题&#xff0c;一起发送给大模型进行处理。 先来看一下效果&#xff0c;如图 加载数据文件到向量数据库中 手动查询向量数据库实现 R…

作者头像 李华
网站建设 2026/5/28 21:47:34

用 Python 编写 K8s 漏洞扫描器,自动发现集群内的配置错误

标签&#xff1a; #Kubernetes #Python #DevSecOps #网络安全 #云原生 #自动化运维&#x1f6a8; 前言&#xff1a;你的集群也许正在“裸奔” 你是否见过这种 YAML 配置&#xff1f; securityContext:privileged: true # 为了省事&#xff0c;直接给特权runAsUser: 0 # 直…

作者头像 李华
网站建设 2026/5/30 18:50:36

L911349010CB 继电器板

L911349010CB 继电器板概述类型&#xff1a;工业继电器控制板功能&#xff1a;通过低电压控制信号驱动高电压或大电流负载用途&#xff1a;实现设备开关控制、自动化逻辑执行或保护回路主要功能开关控制接收来自 PLC、控制器或传感器的低电压信号控制继电器闭合或断开&#xff…

作者头像 李华