Separera libcurls proxy-huvuden från webbplatsens huvuden
Ge libcurl separata listor med proxy- och destinationshuvuden, och inse att vidarebefordran i klartext har en annan synlighetsgräns.
För ett befintligt libcurl-handtag, separera listorna med destinations- och proxyhuvuden uttryckligen:
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); Håll det konfigurerade handtaget och de giltiga listorna vid liv under överföringen. CURLHEADER_SEPARATE skiljer huvuden som används på CONNECT från huvuden som används för destinationsbegäran. Äldre exempel med enhetlig policy kan lägga den vanliga listan i båda utbytena.
| Begärans sökväg | Betydelsen av separata listor |
|---|---|
| HTTPS i en vanlig CONNECT-tunnel | Proxy-utbytet kommer först; därefter följer destinationens HTTP-huvuden inne i destinationens TLS. |
| Vanlig HTTP-vidarebefordran | Proxyn kan läsa destinationshuvudena, och libcurl kan använda båda tillämpliga listorna på den enda vidarebefordrade begäran. |
En ruttmarkör som bara gäller proxyn hör till proxy-utbytet. Vid vidarebefordran i klartext kan ett godtyckligt anpassat fält nå ursprunget om inte vidarebefordringsarrangemanget hanterar det; namnet på alternativet är ingen garanti för konfidentialitet.
Använd stödda autentiseringsuppgiftsalternativ för autentisering. För operatörsdefinierade metadata, fastställ vilket hopp som förbrukar dem och om de får vidarebefordras i stället för att lägga ett lösenord i ett generiskt fält.
När en markör saknas eller verkar läcka, identifiera den faktiska begäran som innehåller den. En header-callback som visar flera utbyten kan få korrekt separerade listor att se blandade ut.