Успішна відповідь HTTP/1.1 CONNECT завершується після свого розділу заголовків:

HTTP/1.1 200 Connection Established

Після цієї межі тунель несе те саме з’єднання. Для HTTPS-призначення наступні байти клієнта зазвичай починають обмін TLS із призначенням.

Проксі не повинен додавати Transfer-Encoding або Content-Length до успішної відповіді CONNECT. Тіла відповіді HTTP, яке треба було б ділити на chunk, немає. Додавання порожнього завершального chunk, навпаки, впорснуло б байти в новий тунель.

У клієнта теж є вимога: він має ігнорувати ці поля розмітки, якщо вони з’являться у відповіді CONNECT класу 2xx. Тож некоректний відправник не є причиною описувати кожного відповідного клієнта як такого, що чекає на поділене тіло.

Тримайте встановлене з’єднання відкритим для передавання. Закриття після 200 руйнує тунель; відкриття іншого з’єднання не є продовженням прийнятого запиту CONNECT.

Невдала відповідь CONNECT обробляється інакше й може нести звичайне тіло помилки HTTP. Відокремлюйте цю відповідь від успішної передачі, коли реалізуєте або читаєте трасування проксі.

Схожі статті