Dla istniejącego uchwytu libcurl jawnie oddziel listy nagłówków miejsca docelowego i proxy:

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);

Utrzymuj skonfigurowany uchwyt i prawidłowe listy przy życiu przez czas transferu. CURLHEADER_SEPARATE rozróżnia nagłówki używane w CONNECT od nagłówków używanych w żądaniu do miejsca docelowego. Starsze przykłady jednolitej polityki mogą umieścić zwykłą listę w obu wymianach.

Ścieżka żądaniaZnaczenie oddzielnych list
HTTPS w zwykłym tunelu CONNECTNajpierw odbywa się wymiana z proxy; następnie nagłówki HTTP miejsca docelowego następują wewnątrz TLS miejsca docelowego.
Zwykłe przekazywanie HTTPProxy może odczytać nagłówki miejsca docelowego, a libcurl może użyć obu odpowiednich list w jednym przekazywanym żądaniu.

Znacznik routingu przeznaczony tylko dla proxy należy do wymiany z proxy. Przy przekazywaniu zwykłym tekstem dowolne niestandardowe pole może dotrzeć do źródła, chyba że układ przekazywania sobie z nim poradzi; nazwa opcji nie jest gwarancją poufności.

Do uwierzytelniania używaj obsługiwanych opcji poświadczeń. W przypadku metadanych definiowanych przez operatora ustal, który przeskok je zużywa i czy można je przekazywać, zamiast umieszczać hasło w ogólnym polu.

Gdy znacznika brakuje lub wygląda na wyciekający, zidentyfikuj rzeczywiste żądanie, które go zawiera. Wywołanie zwrotne nagłówków pokazujące kilka wymian może sprawić, że poprawnie oddzielone listy będą wyglądać na pomieszane.

Powiązane artykuły