Per un handle libcurl esistente, separate esplicitamente gli elenchi di intestazioni di destinazione e 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);

Mantenete vivo l'handle configurato e gli elenchi validi durante il trasferimento. CURLHEADER_SEPARATE distingue le intestazioni usate su CONNECT da quelle usate per la richiesta di destinazione. I vecchi esempi a politica unificata possono inserire l'elenco ordinario in entrambi gli scambi.

Percorso della richiestaSignificato degli elenchi separati
HTTPS in un tunnel CONNECT ordinarioLo scambio con il proxy viene prima; poi seguono le intestazioni HTTP di destinazione all'interno del TLS di destinazione.
Inoltro HTTP sempliceIl proxy può leggere le intestazioni di destinazione e libcurl può usare entrambi gli elenchi applicabili sull'unica richiesta inoltrata.

Un marcatore di instradamento solo per il proxy appartiene allo scambio con il proxy. Con l'inoltro in testo normale, un campo personalizzato arbitrario può raggiungere l'origine, a meno che la disposizione di inoltro non lo gestisca; il nome dell'opzione non è una garanzia di riservatezza.

Usate le opzioni di credenziali supportate per l'autenticazione. Per i metadati definiti dall'operatore, stabilite quale salto li consuma e se possono essere inoltrati invece di inserire una password in un campo generico.

Quando un marcatore manca o sembra fuoriuscire, identificate la richiesta effettiva che lo contiene. Un callback di intestazioni che mostra più scambi può far sembrare mescolati elenchi correttamente separati.

Articoli correlati