Para sa umiiral na handle ng libcurl, tahasang ihiwalay ang mga listahan ng destinasyon at proxy na header:

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

Panatilihing buhay ang naka-configure na handle at mga valid na listahan sa panahon ng transfer. CURLHEADER_SEPARATE ay nagtatangi ng mga header na ginagamit sa CONNECT mula sa mga header na ginagamit para sa kahilingan sa destinasyon. Ang mga lumang halimbawa ng pinag-isang patakaran ay maaaring maglagay ng ordinaryong listahan sa parehong palitan.

Landas ng kahilinganKahulugan ng magkahiwalay na listahan
HTTPS sa loob ng ordinaryong CONNECT tunnelAng palitan sa proxy ay mauna; pagkatapos ay sumusunod ang mga HTTP header ng destinasyon sa loob ng TLS ng destinasyon.
Ordinaryong HTTP forwardingMababasa ng proxy ang mga header ng destinasyon, at magagamit ng libcurl ang parehong naaangkop na listahan sa nag-iisang naipasang kahilingan.

Ang routing marker na para lamang sa proxy ay kabilang sa palitan sa proxy. Sa pagpapasa ng plaintext, ang isang arbitrary na custom na field ay maaaring makarating sa pinagmulan maliban kung pinangangasiwaan ito ng kaayusan ng pagpapasa; ang pangalan ng opsyon ay hindi garantiya ng pagiging kompidensyal.

Gumamit ng mga suportadong opsyon sa kredensyal para sa authentication. Para sa metadata na tinukoy ng operator, alamin kung aling hop ang gumagamit nito at kung maaari itong ipasa sa halip na maglagay ng password sa isang generic na field.

Kapag nawawala ang isang marker o mukhang tumatagas, tukuyin ang aktwal na kahilingan na naglalaman nito. Ang isang header callback na nagpapakita ng ilang palitan ay maaaring magpamukhang halo-halo ang wastong paghiwalay ng mga listahan.

Kaugnay na mga artikulo