Samle headerlinjer atskilt fra svarets kropp. En overføring gjennom en proxy kan levere CONNECT-, autentiserings-, omdirigerings- og destinasjonssvarhoder 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 antall godkjente byte. Den mottar komplette linjer; men den grupperer dem ennå ikke i svar eller velger headerne til det endelige nettstedet.

Tolk sekvensen som blokker

En HTTP-statuslinje starter en svarsblokk, og en tom linje avslutter headerne 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 parsertilstand til å skille dem fra de innledende headerne, i stedet for å knytte hvert senere felt til det første svaret.

Bevar eller undertrykk tunnelbeviset

Les CURLINFO_HTTP_CONNECTCODE separat for CONNECT-statusen til HTTPS-tunnelen. En godkjent tunnel fastslår ikke et vellykket nettstedssvar.

Hvis CONNECT-headerne 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.

Relaterte artikler