libcurl의 프록시 헤더와 웹사이트 헤더 분리
libcurl에 프록시와 대상 헤더 목록을 별도로 제공하되, 일반 텍스트 전달은 가시성 경계가 다르다는 점을 인식합니다.
기존 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은 전달되는 하나의 요청에서 해당되는 두 목록을 모두 사용할 수 있습니다. |
프록시 전용 라우팅 마커는 프록시 교환에 속합니다. 일반 텍스트 전달에서는 전달 방식이 처리하지 않는 한 임의의 사용자 정의 필드가 원본에 도달할 수 있습니다. 옵션 이름은 기밀성 보장이 아닙니다.
인증에는 지원되는 자격 증명 옵션을 사용합니다. 운영자가 정의한 메타데이터의 경우 어떤 홉이 이를 소비하는지, 일반 필드에 비밀번호를 넣는 대신 전달할 수 있는지 확인합니다.
마커가 없거나 유출된 것으로 보이면 이를 포함하는 실제 요청을 식별합니다. 여러 교환을 보여 주는 헤더 콜백은 올바르게 분리된 목록을 혼합된 것처럼 보이게 할 수 있습니다.