响应
读取响应的状态、耗时、正文、标头、Cookie 和传输字节,搜索大型正文,比较响应并存储它们。
服务器返回的一切都显示在响应窗格中:适合其类型的视图中的正文、标头、Cookie、原样的消息,以及它的十六进制字节和传输中的字节。状态和耗时显示在 URL 栏下方的那一行。 正文在到达时就写入磁盘,所以几百 MB 的响应也能像小响应一样快地打开。

状态、耗时和大小
发送之后,URL 栏下方的那一行显示:
- 状态,按其类别(2xx、3xx、4xx、5xx)着色;没有得到响应的请求则改为显示 失败 或 已取消,
- 交换每个 阶段 对应的一条横条,在请求运行时不断增长,
- 总耗时。
将指针停留在这一行上,会打开一张带详情的卡片:
| 卡片中的项目 | 含义 |
|---|---|
| 状态 | 状态码和原因短语。 |
| 时间 | 这次交换的总耗时。 |
| 大小 | 正文的大小;正文到达期间,显示已到达多少、共多少。 |
| 编码 | 压缩方式,以及解码前后的大小,例如 br, 12 KB → 48 KB,或无法解码的说明。 |
| 3 次重定向 | 所跟随的重定向;点按可查看每一跳的状态、方法、地址和耗时。 |
| 检查 | 请求的检查中有多少通过。 |
| 复用的连接 | 请求使用的是先前保持打开的连接:没有 DNS、连接或 TLS 耗时。 |
| TLS | TLS 版本和协议,例如 TLS 1.3 · h2。点按它可查看证书:主体、颁发者、有效期 日期和 名称。橙色的打开的锁表示验证已关闭。 |
| 提供 HTTP/3 | 服务器通过 Alt-Svc 提供了 HTTP/3;见 HTTP 版本。 |
| 地址 | 服务器的 IP 地址和端口。 |
| 时间线 | DNS、连接、TLS、等待(直到响应的第一个字节)和 传输,每项都附有耗时。 |
当请求被重新发送(在新连接上,或通过 HTTP/1.1)时,卡片会说明原因。请求失败时,卡片会显示错误。
响应标签页
| 标签页 | 显示的内容 |
|---|---|
| 正文 | 正文,以你选择的视图显示。 |
| 事件 | 服务器发送事件和其他事件流,每个事件一行。见 WebSocket 与 SSE。 |
| 测试 | 请求的检查和脚本测试的结果,带计数,例如 3/4。 |
| 控制台 | 请求的脚本所记录的日志;仅在脚本运行过时显示。见脚本和测试。 |
| 标头 | 响应标头,带计数。 |
| Cookie | 发送和设置的 Cookie,以及窗口的 Cookie 存储。 |
| 原始 | 作为一条 HTTP 消息的响应:状态行、标头、一个空行和正文。 |
| 十六进制 | 正文的字节。 |
| 传输 | 发送和接收的字节,与它们在连接上传输时完全一样。 |
正文视图
在 正文 标签页顶部那一行中选择视图:
| 视图 | 显示的内容 |
|---|---|
| 文本 | 到达时的正文,按其内容类型着色。 |
| JSON | 美化后的 JSON。 |
| JSON 树 | 可展开和折叠的树形 JSON。 |
| XML | 以元素、属性和文本组成的树显示的 XML。 |
| 表单 | 读作树的 URL 编码正文。 |
| MessagePack | 读作树的 MessagePack 正文。 |
| 预览 | 通过“快速查看”显示图像、PDF、音频和视频。 |
每个视图对每种正文都可用,所以用错误的内容类型发送的响应,仍可以按它真实的类型来读。响应以哪个视图打开由内容类型决定,Echolot 会为每种正文记住你选择的视图: 在你为某个 JSON 响应选择 JSON 树 之后,接下来的响应会以树打开。
HTML 和脚本绝不会被运行或渲染。预览 和 在默认 App 中打开 会把它们显示为文本。
文本视图中的长行会横向滚动。点按换行按钮,或选取 视图 › 自动换行,即可让它们换行。视图 › 放大代码(⌘+)、缩小代码(⌘-)和 实际代码大小(⌘0)会更改各处代码的大小。
JSON 树和 XML 树
树显示每个值的键或索引、类型和值;折叠的对象或数组会显示它包含多少项。超过 1,000 项的数组会被拆分成 [0 … 999] 之类的范围,所以再大的数组也能立即打开。
将指针停留在某个值上,会出现它的按钮:
- 在浏览器中打开,用于是网址的值,
- 拷贝值,
- 存入变量…,它把值保留在变量中,并且如果你愿意,会在每次发送后更新它。见响应捕获。
右键点按某一行可看到更多:
- 在 JSON 树中:拷贝路径(指向该值的 JSONPath,例如
$.items[0].sku)、拷贝值 和 添加断言,后者会在 测试 标签页中添加一项检查,要求该值等于它现在的值。 - 在 XML 树中:拷贝 XPath 和 拷贝值。
将指针停留在是图像地址的值上,旁边会打开一张缩略图。图像的获取方式与浏览器获取图片一样:不带你的 Cookie 或凭据,最大 10 MB,也不会记入历史记录。
data:image/… 值无需任何请求即可显示。将指针停留在看起来像日期的值上(以秒、毫秒、微秒或纳秒计的 Unix 时间,或 ISO 8601 时间戳),它会显示为易读的日期。
XML 树接受最大 50 MB 的正文,表单 和 MessagePack 最大 64 MB。更大的请使用 文本 并查找。
查找
按 ⌘F(请求 › 在正文中查找)或点按放大镜。
- 在 文本 和 JSON 中,输入要查找的内容。Aa 区分大小写;.* 将其作为正则表达式。栏中会显示你所在的位置,例如
3 of 1,204。按 ↩ 或 ⌘G 查找下一个匹配项, 按 ⇧⌘G 查找上一个。最多标出 10,000 个匹配项;更多时计数会显示+。 - 在 JSON 树、表单 和 MessagePack 中,栏接受
$.items[0]之类的 JSONPath,并跳转到该值。那里什么都没有时,会显示 未找到。
按 Esc 关闭这一栏。
大型响应
Echolot 绝不会把正文留在内存中。它在正文到达时流式写入文件,而查看器只读取屏幕上的那一部分:
- 其余部分仍在到达时,开头的几行就已经显示。正文下载期间,详情卡片会显示已到达多少。
- JSON 在正文一开始就开始美化,并随着它的增长而跟进。
- JSON 树 只构建你展开的行。
- 查找会搜索磁盘上的整个正文。
可以用 Alpenglow 中的 Catalog › Export the catalog 试一试:40,000 个产品,约 14 MB。
正文在磁盘上最多保留到 设置 › 储存空间 › 响应正文最多保留 所设的大小;超过之后,最久未使用的会被移除,在标签页中打开的正文除外。正文已被移除的较早响应会显示 此响应的正文已不再储存。 见储存与加密。
标头
标头 标签页按响应标头到达的顺序列出它们。将指针停留在某一行上,或选中它并按 Space(用 ↑ 和 ↓ 移动),可查看完整的值、 标头的用途以及它的值表示什么。右键点按标头,可选取 拷贝值、拷贝标头 和 添加检查,后者会在 测试 标签页中添加针对该标头的检查。
Cookie
Cookie 标签页有三个部分:
- 随请求发送:发出的 Cookie,以及每个的来源。
- 由响应设置:每个
Set-Cookie,带它的属性,以及存储拒绝它时的警告。 - 储存在此窗口中:窗口的 Cookie 存储中的所有内容。用它的按钮移除一个,或用 全部清除 移除全部。
当请求的 发送并储存 Cookie 关闭时,标签页会说明这一点。见 Cookie。
原始、十六进制和传输
- 原始 把响应显示为一条消息:状态行、标头、一个空行,然后是解码后的正文(它的前 64 MB;正文 标签页有全部内容)。
- 十六进制 显示正文的字节:偏移量、每行 16 个字节分成两组,以及它们的 ASCII。用鼠标,或用方向键和 ⇧ 选择字节;拷贝得到十六进制数对,在 ASCII 列中选择时则得到文本。
- 传输 显示字节,与它们在连接上传输时完全一样:选取 已发送 或 已接收。你能看到分帧后的标头,以及解码之前的压缩正文。每个方向最多保留 1 MB;标签页只显示前一部分时会说明。
存储和分享
点按 正文 标签页右上角的存储按钮:
- 存储正文… 把正文(已解码)写入文件。
- 在默认 App 中打开 用你的 Mac 为其类型所用的 App 打开它。
- 存储编码的正文… 按到达时的样子写出正文,仍保持压缩;仅用于压缩的响应。
- 将交换记录导出为 HAR… 把请求和响应写成 HAR 文件。
要分享请求而不是响应,请使用 请求 › 拷贝为 cURL(⌥⌘C)或 请求 › 生成代码…(⌥⌘G)。见 HTTP 请求。
较早的响应和比较
每次发送都保存在历史记录中。URL 栏下方那一行末尾带计数的时钟按钮,会打开这个请求的各个响应:每个都带有状态、时间、发送者(你、一次运行或一个智能体)、时长和大小。

- 点按某个响应即可显示它。响应窗格上方的一条栏显示 过去的响应;显示最新 回到最新的响应。
- 要比较两个响应,先显示一个,然后将指针停留在列表中的另一个上并点按它的比较按钮,或点按 过去的响应 栏中的 与最新响应比较。比较会显示新增和移除的内容。
- 列表菜单中的 清除此请求的历史记录… 会删除这个请求的历史记录。
整个工作区的历史记录见历史记录。
请求失败时
没有收到响应时,窗格会显示错误,例如 请求超时,以及 再试一次。还可能出现另外两个按钮:
- 查看脚本…,当请求的脚本来自 Echolot 之外、需要你信任之后才能运行时出现。见脚本和测试。
- 允许访问…,在 App Store 版本中,当请求指向应用尚不能读取的文件时出现。

