Успішна відповідь CONNECT не має тіла HTTP
Завершіть успішну відповідь HTTP/1.1 CONNECT на межі заголовків, а потім передавайте байти тунелю без chunk-розмітки та без перезапуску з’єднання.
Успішна відповідь 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. Відокремлюйте цю відповідь від успішної передачі, коли реалізуєте або читаєте трасування проксі.