Після рядка запиту CONNECT ці байти все ще належать проксі:

CONNECT service.example:443 HTTP/1.1\r\n
Host: service.example:443\r\n
User-Agent: example-client\r\n
\r\n

Пересилання Host або User-Agent на порт 443 передає призначенню заголовки відкритим текстом там, де воно очікує TLS. Ця помилка може виникнути ще до того, як вибір шифру стане важливим.

  1. Читайте й розбирайте до термінатора заголовків із порожнім рядком, у межах строку налаштування та обмеження розміру заголовків.
  2. Застосуйте автентифікацію проксі та політику призначення.
  3. Установіть схвалене з'єднання з ціллю.
  4. Надішліть успішну відповідь CONNECT і перейдіть у режим тунелю.

Збережіть буферизовані байти після межі для відповідного наступного стану. Не відкидайте їх і не розглядайте заголовки запиту проксі як подальший запит сайту.

Клієнт має симетричний обов'язок на боці відповіді: завершити читання успішної відповіді CONNECT до запуску тунельного протоколу. Обидві сторони мають домовитися про межу, на якій потік змінює роль.

Схожі статті