客户端准备一个 HTTP 请求,正向代理可以在把它继续发送之前修改这条消息。转发后的版本变得可观察的地方就是目标端。

观察点该处可获取的消息
客户端的请求对象为第一跳准备的请求
源站的请求日志或回显处理器转发后收到的请求
客户端的响应头集合在返回路径上收到的响应

若要受控地核对,请使用你自己运营、会记录或返回所收请求头的端点。给请求加一个可识别的标记,这样源站记录就能与特定的客户端操作对应起来。

在基于 WebClient 的应用程序中,ResponseHeaders 描述的是返回的响应,而不是代理发往目标端的请求记录。服务器可以选择在响应正文里回显请求信息,但那属于应用程序的行为。

如果路径上有多个中间环节,目标端看到的是它们叠加后的转发效果。仅仅存在某个请求头,并不能把变化归因于某一跳。对于自定义 API 字段,转发规则与 Connection 字段规则 说明了何时预期会发生改动。

普通的 HTTPS CONNECT 隧道又增加了一道边界:内部的 HTTP 请求在客户端与网站之间是加密的。中继代理无法编辑这些加密的请求头。CONNECT 交换中的请求头属于那次独立的交换,而受管的 TLS 检查代理则扮演不同的角色。

相关文章