PHP cURL-proxyhoder: CONNECT kontra destinasjonssvar
Hold CONNECT-, autentiserings-, omdirigerings- og sluttresponshoder atskilt når en PHP cURL-overføring bruker en proxy.
Samle headerlinjer atskilt fra svarets kropp. En overføring via en proxy kan levere CONNECT-, autentiserings-, omdirigerings- og destinasjonsresponshoder i én operasjon:
$headerLines = [];
curl_setopt($handle, CURLOPT_HEADERFUNCTION,
function ($handle, $line) use (&$headerLines) {
$headerLines[] = $line;
return strlen($line);
}
);
Denne callbacken beholder den rå linjesekvensen og returnerer antallet godtatte byte. Den mottar komplette linjer; men den grupperer dem ennå ikke i svar eller velger hodene til det endelige nettstedet.
Tolk sekvensen som blokker
En HTTP-statuslinje starter en svarsblokk, og en tom linje avslutter hodene i den. Bevar disse grensene før du velger det endelige destinasjonssvaret. Mellomliggende autentiseringsforsøk og omdirigeringer kan hver legge til blokker.
Trailere kan komme senere gjennom callbacken. Behold nok parser-tilstand til å skille dem fra de innledende hodene, i stedet for å knytte hvert senere felt til det første svaret.
Bevar eller undertrykk tunnelbeviset
Les CURLINFO_HTTP_CONNECTCODE separat for HTTPS-tunnelens CONNECT-status. En godtatt tunnel fastslår ikke et vellykket nettstedssvar.
Hvis CONNECT-hodene ikke er nødvendige for innsamleren, styrer CURLOPT_SUPPRESS_CONNECT_HEADERS leveringen deres til den konfigurerte headerutgangen og callback-banene. Kontroller støtten i den koblede libcurl og PHP-bygget. Undertrykking forenkler innsamlingen, men fjerner tunnelbevis på headernivå som kan hjelpe diagnostikken.
Ikke gjenopprett kroppen med en fast forskyvning eller ved å søke etter en HTML-tag. Headerstørrelser varierer, mellomliggende svar er forskjellige, og kroppen kan være binær eller tom. En gammel utgivelsesspesifikk feilrapport rettferdiggjør ikke en gjettet forskyvning.
Hold kroppshåndteringen atskilt, og bevar overføringsfeilen sammen med de observerte svarfasene hvis innsamlingen eller parsingen mislykkes. Det skiller en avbrutt callback, misdannede applikasjonsdata og en avvist proxy-utveksling.