At beholde en proxy-cookie på CONNECT-anmodningen
Brug libcurls separate proxy-header-grænseflade til et leverandørdefineret CONNECT-login i stedet for at behandle en destinationscookie som proxygodkendelse.
Nogle proxyprodukter definerer et loginflow, der leverer en cookie eller token til efterfølgende proxyanmodninger. Hvis dette token skal optræde på CONNECT, skal du holde det adskilt fra cookies beregnet til webstedet inde i tunnelen.
libcurl leverer en dedikeret liste med brugerdefinerede headere til proxyen. I en allerede initialiseret C-applikation kan et konfigurationsuddrag se sådan ud:
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);Dette er kun passende, når proxyens dokumenterede loginprotokol kræver den header. Kontroller allokering og valgmuligheders resultater i den omgivende kode, behold listen, indtil overførslen er fuldført, og ryd eller erstat derefter håndtagets pointer, før listen frigives.
Med separat headerhåndtering sender libcurl proxylisten på CONNECT og destinationslisten på anmodningen inde i den etablerede tunnel. Proxyen modtager derfor leverandørens token, uden at dette token bliver en webstedscookie. Denne adskillelse er standard fra libcurl 7.42.1; den eksplicitte valgmulighed gør den tilsigtede adfærd synlig.
En browsercookiekrukke er en anden mekanisme
Aktivering af libcurls cookie-motor eller angivelse af en cookie til destinationen gengiver ikke automatisk en browsers eget proxy-loginflow. CONNECT sker før destinationens HTTPS-udveksling. Identificer produktets faktiske krav i stedet for at kopiere en opfanget webstedscookie ind i hver anmodning.
Hvis proxyen bruger standard HTTP-proxygodkendelse, skal du i stedet bruge libcurls proxy-legitimationsoplysninger og understøttede godkendelsesindstillinger. En 407 med Proxy-Authenticate er en anden protokol end en HTML-loginside, der returnerer et sessionstoken.
Hold tokenet begrænset til dets proxyendepunkt og tilsigtede levetid. Når du skifter til en anden mellemled, skal du erstatte headerlisten som en del af den konfigurationsændring. En generel anmodningsheaderliste er et dårligt sted for en hemmelighed, der kun tilhører én proxy.