Att behålla en proxy-cookie på CONNECT-begäran
Använd libcurls separata proxy-header-gränssnitt för en leverantörsdefinierad CONNECT-inloggning i stället för att behandla en destinationscookie som proxyautentisering.
Vissa proxyprodukter definierar ett inloggningsflöde som tillhandahåller en cookie eller token för efterföljande proxybegäranden. Om denna token måste visas på CONNECT, håll den åtskild från cookies avsedda för webbplatsen inne i tunneln.
libcurl tillhandahåller en dedikerad lista med anpassade rubriker för proxyn. I en redan initierad C-applikation kan ett konfigurationsutdrag se ut så här:
struct curl_slist *proxy_headers = NULL;
proxy_headers = curl_slist_append(proxy_headers,
"Cookie: ProxySession=REPLACE_WITH_PROXY_TOKEN");
curl_easy_setopt(handle, CURLOPT_PROXYHEADER, proxy_headers);
curl_easy_setopt(handle, CURLOPT_HEADEROPT,
(long) CURLHEADER_SEPARATE);Detta är endast lämpligt när proxyns dokumenterade inloggningsprotokoll kräver den rubriken. Kontrollera resultaten av allokering och alternativ i den omgivande koden, behåll listan tills överföringen är klar och rensa eller ersätt sedan handtagets pekare innan listan frigörs.
Med separat rubrikhantering skickar libcurl proxylistan på CONNECT och destinationslistan på begäran inne i den etablerade tunneln. Proxyn tar därför emot leverantörens token utan att denna token blir en webbplatskaka. Denna separation är standard från libcurl 7.42.1; det explicita alternativet gör det avsedda beteendet synligt.
En webbläsares cookiekruka är en annan mekanism
Att aktivera libcurls cookiemotor eller sätta en cookie för destinationen återskapar inte automatiskt en webbläsares eget proxyinloggningsflöde. CONNECT sker före HTTPS-utbytet med destinationen. Identifiera produktens faktiska krav i stället för att kopiera en fångad webbplatskaka till varje begäran.
Om proxyn använder standard-HTTP-proxyautentisering använder du i stället libcurls proxyuppgifter och de autentiseringsalternativ som stöds. En 407 med Proxy-Authenticate är ett annat protokoll än en HTML-inloggningssida som returnerar en sessionstoken.
Håll token begränsad till sin proxy-slutpunkt och avsedda livslängd. När du byter till en annan mellanhand ersätter du rubriklistan som en del av den konfigurationsändringen. En allmän begäransrubriklista är en dålig plats för en hemlighet som bara tillhör en proxy.