2

我读到 HTTP 代理应该删除跳 HTTP 标头(https://www.freesoft.org/CIE/RFC/2068/143.htm

这是有道理的,因为其中一些标头与连接相关。

问题是。此 RFC 是否仅适用于显式代理,还是应该在透明 HTTP 代理上完成?

只是给你一个例子。假设一个客户端进行 HTTP 调用并且它有一个明确的代理集。但是,中间有一个透明代理。所以,整个管道看起来像这样

Client ↔ Transparent Proxy ↔ Explicit proxy ↔ Web page

显式代理可能需要身份验证并将发回Proxy-Authenticate标头。

如果透明代理删除此标头(根据 RFC),则不会提示客户端进行身份验证,也不会起作用。

这个立即跳了出来,但我认为当透明代理看起来不应该接触逐跳标头时,可以设想其他一些场景。

我是否遗漏了某些内容或逐跳删除规则仅适用于显式代理?

4

1 回答 1

1

不存在透明代理。

就 HTTP RFC 而言,根本没有这样的东西。规范不承认这个概念。客户端 (A) 可以连接到服务器 (C) 以获取或修改资源,或者它可以连接到代理 (B) 以让后者代表它这样做。在前一种情况下,逐跳标头调节客户端和服务器之间的连接;在后者中,它们调节客户端和代理之间的连接。如果代理连接到服务器来处理请求,它必须管理自己的代理-服务器链接的逐跳标头。

除此之外,您添加的任何其他内容都不是协议的一方,它的存在不应影响它的运行方式。(A) 与 (B) 或 (C) 的联系(或 (B) 与 (C) 的联系)是否由其他东西介导是无关紧要的。重要的是,当 (A) 选择向 (B) 发送请求时,它应该收到与选择直接向 (C) 发出请求时相同的资源。(B) 或 (C) 甚至不必是单个主机;他们自己可以通过任意数量的中间层传递请求。

不管怎样,“透明代理”也可能是一个 SOCKS 代理,在这种情况下,它根本不会修改任何 HTTP 标头,因为它甚至无法确定它首先转发的内容是否是 HTTP。

于 2021-12-28T21:01:23.533 回答