成功的 CONNECT 应答没有 HTTP 正文
在头部边界处结束成功的 HTTP/1.1 CONNECT 应答,然后在不使用 chunk 分帧、也不重启连接的情况下转发隧道字节。
成功的 HTTP/1.1 CONNECT 应答在其头部之后即告结束:
HTTP/1.1 200 Connection Established
越过该边界后,同一条连接承载隧道。对于 HTTPS 目标,客户端接下来的字节通常就是与目标进行 TLS 交换。
代理不得向成功的 CONNECT 应答添加 Transfer-Encoding 或 Content-Length。没有可供分块的 HTTP 响应正文。附加一个空的终止 chunk 反而会把字节注入新隧道。
客户端也有要求:如果 2xx CONNECT 应答中出现这些分帧字段,它必须忽略它们。因此,发送方不合规并不能成为把每个合规客户端都描述成在等待分块正文的理由。
为转发保持已建立的连接打开。在 200 之后关闭它会毁掉隧道;另开一条连接并不是已接受的 CONNECT 请求的延续。
失败的 CONNECT 应答处理方式不同,可以携带普通的 HTTP 错误正文。在实现或阅读代理跟踪时,要把该应答与成功的交接区分开。