模拟HTTP响应构建器
指导
模拟HTTP响应构建器
在几秒钟内构建一个结构正确的 HTTP 响应消息。选择一个状态码,选择消息体类型,添加头信息,工具将生成一个可直接粘贴的响应字符串,包含状态行、头信息和消息体,以 CRLF 分隔——非常适合用于测试用例、集成模拟、API 文档以及对客户端进行响应回放。
如何使用
- 选择 HTTP 版本 (默认为 HTTP/1.1) 和一个 状态码 来自分组选择器——例如
200 OK,404 Not Found, 或者503 Service Unavailable. - (可选) 覆盖 原因短语 如果需要在状态码后使用非标准文本。
- 选择一个 消息体类型 (纯文本、JSON、XML、HTML、表单或无) 并输入或粘贴消息体内容。
- 切换 自动设置 Content-Type, 自动设置 Content-Length,并且 日期 使头信息与服务器实际响应保持一致。
- 添加任何额外的头信息——从常见头信息(Cache-Control、ETag、Set-Cookie、CORS、速率限制头)中选择,或输入自定义的名称/值对。
- 复制完整的响应、仅复制头信息,或将其下载为
.http文件,用于在 REST 客户端、测试用例或回放工具中使用。
特征
- 分组状态码选择器 – 将常见的 1xx 至 5xx 状态码按类别组织,每个类别都有其标准的原因短语。
- 消息体类型选择器 – 自动填充匹配的 Content-Type(application/json、text/html、application/xml、application/x-www-form-urlencoded、text/plain),以确保头信息和消息体内容保持同步。
- 自动 Content-Length – 使用 UTF-8 编码计算字节(而非字符),与真实服务器计算值的方式一致。
- IMF-fixdate Date 头 – 生成符合标准的时间戳(例如
Sun, 06 Nov 1994 08:49:37 GMT)以表示当前时刻。 - 常见响应头信息 – 提供一键预设,用于 Cache-Control、ETag、Expires、Last-Modified、Location、Server、Set-Cookie、Vary、WWW-Authenticate、Access-Control-Allow-Origin、X-RateLimit 和 X-Powered-By。
- 自定义标题 – 可添加任意名称/值对,并实时预览组装后的响应。
- 两种输出视图 – 完整响应(状态行 + 头信息 + 空行 + 消息体)和仅头信息视图——可复制任一种,或下载完整的响应作为
response.http. - 符合规范的行结束符 – 使用 CRLF(
\r\n)在行之间分隔,这是 RFC 9112 规定的行终止符。 - 实时更新 – 每次更改都会立即重新计算输出,无需提交按钮。
- 完全在浏览器中运行 – 无数据离开您的设备,也无需后端服务。
常见用例
- 单元和集成测试用例 – 将输出粘贴到字符串测试用例中,用于
requests-mock,nock、MSW、WireMock 或任何 HTTP 记录器。 - API文档 – 在 OpenAPI 示例或开发者文档中展示精确的响应结构(含头信息)。
- 客户端调试 – 在无需搭建真实后端的情况下,重现罕见的服务器响应(如限流、部分内容、重定向)。
- 教学 HTTP – 可视化响应消息的线上传输格式:状态行、头信息、空行、消息体。
- 手动回放 – 将响应通过
nc -l或类似监听器传递,以测试客户端的反应。
常问问题
-
HTTP/1.1 响应消息的结构是什么?
一个 HTTP/1.1 响应由状态行、零个或多个头字段、一个空行以及可选的消息体组成。状态行由 HTTP 版本、三位数的状态码和一个原因短语组成,各部分之间以单个空格分隔。每一行以 CRLF(回车+换行)结束。位于最后头字段之后的空 CRLF 标记了消息体的开始。此格式定义在 RFC 9112(RFC 7230 的继任者)中。
-
Content-Length 实际上测量的是字节还是字符?
Content-Length 是消息体的字节数(octets),而不是字符数。对于 ASCII 文本,两者数值相同,但对于包含非 ASCII 字符的 UTF-8 字符串,数值会不同——一个表情符号或带重音的字母通常占用 2 到 4 个字节。从字符串的字符数量计算 Content-Length 是最常见的 HTTP 错误之一,会导致客户端截断消息体或无限等待缺失的字节。
-
301 和 302 重定向有什么区别?
这两种响应都包含一个指向新 URL 的 Location 头,但语义不同。301 Moved Permanently 告诉客户端和搜索引擎资源已永久移动,因此缓存和链接重写器可能会替换原始 URL。302 Found(最初称为 'Moved Temporarily')表示临时重定向——未来应继续使用原始 URL。对于现代方法保留的重定向,308(永久)和 307(临时)通常比 301 和 302 更推荐。
-
HTTP/2 仍然使用状态行和原因短语吗?
HTTP/2 保留了相同的数字状态码,但完全移除了文本原因短语。状态通过伪头字段 (:status: 200) 传递,协议以二进制帧而非文本行形式传输。原因短语仅存在于 HTTP/1.x 中,始终是信息性的——客户端必须根据状态码采取行动,而不是文本内容。
-
为什么 HTTP 要求使用 CRLF 而不是仅使用换行符?
HTTP 继承了早期互联网文本协议(SMTP、NNTP、FTP)在 1980 年代定义的行终止约定,这些协议都使用 CRLF (\r\n) 作为标准的行结束符。RFC 9112 中的语法要求 CRLF 用于状态行、头字段之间以及位于消息体前的空行。大多数服务器可以容忍仅使用 LF,但严格解析器和代理可能会拒绝缺少回车符的响应。
