Echolot
请求

请求设置

为请求选择 HTTP 版本、重定向、Cookie、解压缩、TLS 检查、超时和原始模式,并设置代理和证书。

设置 标签页决定请求如何传输:使用哪个 HTTP 版本、是否跟随重定向、是否保留 Cookie、是否检查证书,以及它最多可以花多长时间。代理和证书针对整个工作区或整个 App 设置,见本页后面。

请求的设置标签页:原始模式,HTTP 版本为“自动”并附说明,验证 TLS 证书,跟随重定向(最大重定向次数为 10),Cookie,解压缩响应,以及超时 60 秒

设置标签页

设置默认值作用
原始模式关只发送 标头 标签页中的标头,不添加任何内容。
HTTP 版本自动自动、HTTP/1.1、HTTP/2 或 HTTP/3。
验证 TLS 证书开对 https:// 地址检查服务器的证书。
跟随重定向开跟随 3xx 响应,最多 最大重定向次数 次。
最大重定向次数10从 1 到 50。
发送并储存 Cookie开发送窗口的存储中为该地址保留的 Cookie,并保留响应所设置的 Cookie。
解压缩响应开请求压缩的响应并将其解码。
超时60 秒整个交换最多可以花的时间,从 1 秒到一小时,步长 5 秒。

请求的文件中只保存你更改过的设置。任何设置与默认值不同时,标签页会显示一个圆点;原始模式开启时,标签页显示 设置(原始)。恢复默认设置 会还原每项设置。

在请求文件中,这些设置如下所示:

[settings]
http-version = "http2"
follow-redirects = false
timeout = 10.0

HTTP 版本

选项Echolot 的做法
自动服务器支持时使用 HTTP/2,否则使用 HTTP/1.1。服务器一旦提供 HTTP/3(通过 Alt-Svc 标头),之后发往它的请求会使用 HTTP/3,无法连接时回退到 TCP。
HTTP/1.1仅使用 HTTP/1.1。
HTTP/2仅使用 HTTP/2:通过 TLS,或通过明文 http:// 并事先知晓(h2c)。
HTTP/3仅通过 QUIC 使用 HTTP/3。

HTTP/3 有一些限制:

  • 它需要 macOS 27 或更高版本。在较旧的 Mac 上,标签页会说明这一点,设为 HTTP/3 的请求无法发送;自动 则保持使用 HTTP/2 和 HTTP/1.1。
  • 仅限 https:// 地址。
  • 不支持代理(包括系统代理)、自定义 CA 文件和客户端证书。设为 HTTP/3 且需要其中任何一项的请求会被拒绝,并说明原因。设为 自动 时,这类请求仍使用 TCP。
  • 原始模式不能与 HTTP/3 一起使用。

设为 自动 时,当响应提供 HTTP/3,它的详情卡片会显示 提供 HTTP/3。如果下一个请求的 QUIC 连接失败,Echolot 会改为通过 TCP 发送,并忘记这个提供,详情卡片会说明原因。不会重复发送。

还有两种情况会自行切换版本:

  • NTLM 需要 HTTP/1.1。设为 自动 时,NTLM 请求通过 HTTP/1.1 发送;设为 HTTP/2 或 HTTP/3 时则被拒绝。
  • 当服务器以 HTTP_1_1_REQUIRED 重置某个 HTTP/2 请求时,Echolot 此后对该服务器使用 HTTP/1.1。可安全重复的请求会立即通过 HTTP/1.1 重新发送;其他请求会停止并显示相应的错误, 你再次发送时则通过 HTTP/1.1 发出。

响应的详情卡片会在 TLS 版本旁边显示所使用的版本。

重定向

跟随重定向 开启时,Echolot 会跟随指向 http:// 和 https:// 地址的 301、302、303、307 和 308 响应:

  • 303 变成不带正文的 GET(HEAD 仍是 HEAD)。
  • 301 和 302 像浏览器一样,把 POST 变成 GET。
  • 307 和 308 保持方法和正文不变。

每一跳都会被记录。详情卡片显示 3 次重定向(或实际次数);点按它可查看每一跳的状态、方法、地址和耗时,以及最终地址。可以用 Alpenglow 中的 Echo › Follow redirects 试一试。

重定向到另一个源会丢弃你的凭据:Authorization 和 Cookie 标头、API 密钥标头、含有机密的标头、签名(Digest、AWS、Hawk、EdgeGrid、NTLM)以及客户端证书。 见凭据只留在其来源。

跟随重定向 关闭时,3xx 响应就是最终的响应。

Cookie

每个窗口都有一个 Cookie 存储。发送并储存 Cookie 开启时,请求会发送存储中与其地址匹配的 Cookie,响应所设置的 Cookie 会进入存储。对于既不该发送也不该保留任何 Cookie 的请求,请将其关闭。

响应的 Cookie 标签页显示 随请求发送 的内容、由响应设置 的内容,以及 储存在此窗口中 的内容。用 Cookie 对应的按钮移除其中一个,或用 全部清除 移除全部。见响应。

存储遵循浏览器的规则:响应不能为整个公共后缀(例如 .com 或 .co.uk)设置 Cookie。可以试一试 Alpenglow 中的 Echo › Set a cookie,然后再向 demo.echolot.dev 发送任何其他请求。

解压缩响应

解压缩响应 开启时,Echolot 会发送 Accept-Encoding: gzip, deflate, br, zstd(除非你自己设置了该标头),并解码 gzip、deflate、Brotli 和 Zstandard 响应。正文 标签页显示解码后的正文; 原样到达的字节保留在 传输 标签页中,正文的存储菜单则提供 存储编码的正文…。详情卡片会显示,例如 br, 12 KB → 48 KB。

关闭它,可以看到服务器压缩后的响应原样,或不发送 Accept-Encoding 标头。

验证 TLS 证书

除非你要对一个证书不被你的 Mac 信任、而你又无法添加其 CA 的服务器进行测试,否则请保持开启。关闭后,详情卡片会显示橙色的打开的锁,它的弹出窗口显示 证书验证已关闭。

对于私有 CA,更好的办法是仅为该主机信任它:见证书。

超时

超时是交换可以花费的总时间,从连接到最后一个字节。时间用尽时,请求会停止并显示 请求超时,连接随即关闭。

原始模式

原始模式用于把请求逐字节按你写的样子发送,包括格式错误的请求,以测试服务器如何处理它。Echolot 会省去它为每个请求添加的标头(Host、User-Agent、Accept、 Accept-Encoding、Cookie、Content-Length 和分帧),也不检查请求是否格式良好。在 自动生成 下,标头 标签页显示 原始模式:Echolot 不添加任何标头,只发送上方的标头。

对于只发送你自己标头的请求,还要把 认证 设为 无认证,并且如果正文需要,请写上你自己的 Content-Type。原始模式写出的是 HTTP/1.1,所以不能与 HTTP/3 一起使用。

重试

Echolot 会保持连接打开并复用它们,这样可以节省 DNS、连接和 TLS 的时间;复用时,详情卡片会显示 复用的连接。有时服务器恰好在请求发出时关闭了保持打开的连接。这时:

  • 可安全重复的请求会在新连接上重新发送:GET、HEAD、OPTIONS、TRACE、PUT 或 DELETE,或带有 Idempotency-Key 标头的任何请求。详情卡片会说明它被重新发送了。
  • 其他任何请求(比如不带 Idempotency-Key 的 POST)不会重新发送,因为服务器可能已经处理了它。它会停止并显示 在收到任何响应前连接已关闭;服务器可能已处理该请求。

Echolot 在其他任何情况下都不会重试。

代理

请求默认经过 设置 › 网络 中选择的代理:

代理含义
系统设置来自 系统设置 › 网络 的 HTTP、HTTPS 和 SOCKS 代理,连同其例外。不使用自动代理配置(PAC)。
无每个请求都直接连接。
手动HTTP、HTTPS(与代理之间使用 TLS)或 SOCKS5 代理,例如 http://proxy:3128 或 socks5://host:1080,可带用户名和密码(保存在钥匙串中),并在 直接连接到 下列出直连的主机(localhost, *.internal)。

工作区可以设置自己的代理,它会随工作区传给队友和命令行工具:

  1. 从边栏底部的工作区切换器中打开 工作区设置…。
  2. 选取 代理 标签页,并关闭 使用 App 的代理设置。
  3. 选取 系统设置、环境(HTTPS_PROXY…)(读取 HTTPS_PROXY、HTTP_PROXY 和 NO_PROXY)、无 或 手动。
  4. 对于 手动,填写 代理(可以使用变量,例如 {{proxy}})、用户名 和 密码,以及 直接连接到。把密码写成机密变量 {{proxy_password}}:工作区文件从不保存机密。 字面的密码会提供 移到钥匙串。

HTTP/3 从不经过代理。见工作区。

证书

对于使用私有证书颁发机构、或要求客户端证书(双向 TLS)的主机,请在工作区中添加一条规则:

  1. 打开 工作区设置… 并选取 证书 标签页。
  2. 点按 添加主机 并输入主机,例如 api.example.com,或用 *.internal 表示每个子域名。
  3. 在 信任的 CA 旁边,点按 选取… 并选取一个或多个 PEM 文件。除系统的 CA 之外,它们也会被信任。
  4. 对于客户端证书,在 客户端证书 旁边选取文件:PEM 文件或 .p12(.pfx)。对于文件中没有密钥的 PEM 证书,还要选取 私钥 文件。
  5. 如果密钥或 .p12 有密码短语,请在 密码短语 中把它写成机密变量,例如 {{p12_passphrase}}。

第一条与主机匹配的规则生效。工作区内的文件以相对于工作区的路径存储,所以这条规则对拥有该工作区的每个人都有效。每条规则的证书只用于它自己的主机:重定向到另一个主机时,绝不会出示第一个主机的客户端证书。

Mac App Store 版

App Store 版本只能读取你选取过的文件。你在这里选取的 CA 文件、客户端证书和密钥,在之后的发送中仍可读取。队友创建的、指向工作区之外文件的规则,需要你把这些文件一次性提供给应用: 发送会停止,响应窗格会提供 允许访问…。

比较两个版本

App 级设置

代理是唯一带有 App 级默认值的请求设置(设置 › 网络)。其他每项设置,对每个请求都从上表中的默认值开始,请求的文件保存你所更改的内容。要一次更改许多请求的设置,请在边栏中选中它们, 并用 编辑 N 个请求… 修改它们的标头、参数和认证,或者直接编辑文件。

本页内容