기존 libcurl 핸들의 경우 대상과 프록시 헤더 목록을 명시적으로 분리합니다:

curl_easy_setopt(handle, CURLOPT_HEADEROPT, (long)CURLHEADER_SEPARATE);
curl_easy_setopt(handle, CURLOPT_PROXYHEADER, proxy_headers);
curl_easy_setopt(handle, CURLOPT_HTTPHEADER, origin_headers);

전송 중에는 구성된 핸들과 유효한 목록을 살아 있게 유지합니다. CURLHEADER_SEPARATE 은 CONNECT에 사용되는 헤더와 대상 요청에 사용되는 헤더를 구분합니다. 오래된 통합 정책 예제는 일반 목록을 두 교환 모두에 넣을 수 있습니다.

요청 경로별도 목록의 의미
일반 CONNECT 터널 내부의 HTTPS프록시 교환이 먼저 이루어지고, 그다음 대상 TLS 내부에서 대상 HTTP 헤더가 이어집니다.
일반 HTTP 전달프록시는 대상 헤더를 읽을 수 있고, libcurl은 전달되는 하나의 요청에서 해당되는 두 목록을 모두 사용할 수 있습니다.

프록시 전용 라우팅 마커는 프록시 교환에 속합니다. 일반 텍스트 전달에서는 전달 방식이 처리하지 않는 한 임의의 사용자 정의 필드가 원본에 도달할 수 있습니다. 옵션 이름은 기밀성 보장이 아닙니다.

인증에는 지원되는 자격 증명 옵션을 사용합니다. 운영자가 정의한 메타데이터의 경우 어떤 홉이 이를 소비하는지, 일반 필드에 비밀번호를 넣는 대신 전달할 수 있는지 확인합니다.

마커가 없거나 유출된 것으로 보이면 이를 포함하는 실제 요청을 식별합니다. 여러 교환을 보여 주는 헤더 콜백은 올바르게 분리된 목록을 혼합된 것처럼 보이게 할 수 있습니다.

관련 글