Mblidhni rreshtat e kokave veçmas nga trupi i përgjigjes. Një transferim përmes një proxy mund të dorëzojë kokât CONNECT, të vërtetimit, të ridrejtimit dhe të përgjigjes së destinacionit në një operacion të vetëm:

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

Ky callback ruan sekuencën e papërpunuar të rreshtave dhe kthen numrin e bajteve të pranuara. Ai merr rreshta të plotë; por ende nuk i grupon ato në përgjigje dhe nuk zgjedh kokën e faqes përfundimtare.

Interpretoni sekuencën si blloqe

Një rresht statusi HTTP fillon një bllok përgjigjeje, dhe një rresht bosh i përfundon kokën e tij. Ruani këto kufij përpara se të zgjidhni përgjigjen përfundimtare të destinacionit. Përpjekjet e ndërmjetme të vërtetimit dhe ridrejtimet mund të shtojnë secili blloqe.

Trailerat mund të mbërrijnë më vonë përmes callback. Mbani mjaftueshëm gjendje të parserit për t'i dalluar ato nga kokât fillestare, në vend që të lidhni çdo fushë të mëvonshme me përgjigjen e parë.

Ruani ose shtypni provën e tunelit

Lexoni CURLINFO_HTTP_CONNECTCODE veçmas për statusin CONNECT të tunelit HTTPS. Një tunel i pranuar nuk vërteton një përgjigje të suksesshme të faqes.

Nëse kokât CONNECT nuk janë të nevojshme për mbledhësin, CURLOPT_SUPPRESS_CONNECT_HEADERS kontrollon dorëzimin e tyre te dalja e konfiguruar e kokave dhe shtigjet e callback. Kontrolloni mbështetjen në libcurl dhe ndërtimin PHP të lidhura. Shtypja thjeshton mbledhjen, por heq provën e tunelit në nivel koke që mund të ndihmojë diagnozën.

Mos e rikuperoni trupin me një zhvendosje fikse ose duke kërkuar një etiketë HTML. Madhësitë e kokave ndryshojnë, përgjigjet e ndërmjetme ndryshojnë dhe trupi mund të jetë binar ose bosh. Një raport i vjetër bug-u specifik për versionin nuk justifikon një zhvendosje të hamendësuar.

Mbani trajtimin e trupit veçmas dhe ruani gabimin e transferimit së bashku me fazat e vërejtura të përgjigjes nëse mbledhja ose analiza dështon. Kjo dallon një callback të ndërprerë, të dhëna aplikacioni të deformuara dhe një shkëmbim proxy të refuzuar.

Artikuj të ngjashëm