Indsaml headerlinjer adskilt fra svarets krop. En overførsel gennem en proxy kan levere CONNECT-, godkendelses-, omdirigerings- og destinationsresponsheaders i én operation:

$headerLines = [];
curl_setopt($handle, CURLOPT_HEADERFUNCTION,
    function ($handle, $line) use (&$headerLines) {
        $headerLines[] = $line;
        return strlen($line);
    }
);

Dette callback bevarer den rå linjesekvens og returnerer antallet af accepterede bytes. Det modtager komplette linjer; men det grupperer dem endnu ikke i svar eller vælger de endelige websiteheaders.

Fortolk sekvensen som blokke

En HTTP-statuslinje starter en svarsblok, og en tom linje afslutter dens headers. Bevar disse grænser, før du vælger det endelige destinationssvar. Mellemliggende godkendelsesforsøg og omdirigeringer kan hver især tilføje blokke.

Trailere kan senere ankomme gennem callbacket. Behold nok parser-tilstand til at skelne dem fra de indledende headers i stedet for at knytte hvert senere felt til det første svar.

Bevar eller undertryk tunnelbeviset

Læs CURLINFO_HTTP_CONNECTCODE separat for HTTPS-tunnelens CONNECT-status. En accepteret tunnel fastslår ikke et vellykket websitesvar.

Hvis CONNECT-headers ikke er nødvendige for indsamleren, styrer CURLOPT_SUPPRESS_CONNECT_HEADERS deres levering til den konfigurerede headerudgang og callback-stier. Kontroller understøttelsen i den linkede libcurl og PHP-build. Undertrykkelse forenkler indsamlingen, men fjerner tunnelbevis på headerniveau, som kan hjælpe diagnosen.

Gendan ikke kroppen med en fast offset eller ved at søge efter et HTML-tag. Headerstørrelser varierer, mellemliggende svar er forskellige, og kroppen kan være binær eller tom. En gammel versionsspecifik fejlrapport retfærdiggør ikke en gættet offset.

Hold kropshåndteringen adskilt, og bevar overførselsfejlen sammen med de observerede svarfaser, hvis indsamling eller parsing mislykkes. Det skelner et afbrudt callback, misdannede applikationsdata og en afvist proxy-udveksling.

Relaterede artikler