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 응답 읽기를 마치십시오. 양쪽 끝은 스트림이 역할을 바꾸는 경계에 합의해야 합니다.

관련 글