Una respuesta CONNECT HTTP/1.1 correcta termina después de su sección de cabeceras:

HTTP/1.1 200 Connection Established

Tras ese límite, la misma conexión transporta el túnel. Para un destino HTTPS, los siguientes bytes del cliente normalmente inician el intercambio TLS con el destino.

El proxy no debe añadir Transfer-Encoding ni Content-Length a una respuesta CONNECT correcta. No hay ningún cuerpo de respuesta HTTP que dividir en chunks. Añadir un chunk final vacío inyectaría bytes dentro del túnel nuevo.

El cliente también tiene un requisito: debe ignorar esos campos de framing si aparecen en una respuesta CONNECT 2xx. Por tanto, un emisor mal formado no es motivo para describir a todo cliente conforme como si esperara un cuerpo fragmentado.

Mantenga abierta la conexión establecida para retransmitir. Cerrarla después de 200 destruye el túnel; abrir otra conexión no es la continuación de la petición CONNECT aceptada.

Una respuesta CONNECT fallida tiene un tratamiento distinto y puede llevar un cuerpo de error HTTP ordinario. Separe esa respuesta de la entrega correcta al implementar o leer una traza de proxy.

Artículos relacionados