这个 HTTP/1.1 代理请求指的是哪个主机?

GET http://first.example/path HTTP/1.1
Host: second.example

这条消息自相矛盾。发往代理的绝对形式请求中,RFC 9112 要求转发的 Host 值来自请求目标。转发 Host: first.example 才是预期行为。

在开发站点上测试时,应让资源主机名在 URL 与 HTTP authority 中保持一致。在负责解析的那一跳提供所需的主机名到地址映射。相互冲突的 Host 覆盖并不是可移植的后端选择指令。

HTTPS 则不同。普通 CONNECT 隧道建立后,TLS 与内部 HTTP 交互都在其中进行。不进行拦截的代理通常无法改写那个加密的 Host 字段。CONNECT 目标、TLS 名称与证书身份仍是彼此独立的角色。

删除 Via、Referer 或 Cache-Control 并不能让两个 authority 一致。在诊断代理改写之前,请记录请求形式以及你观察到该标头的位置。

相关文章