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.

Relaterte artikler