PHP cURL-proxykoppen: CONNECT tsjin antwurden fan bestimming
Hâld CONNECT-, autentikaasje-, trochstjoer- en definitive antwurdkoppen apart wannear't in PHP cURL-oerdracht in proxy brûkt.
Sammele koprigels apart fan it lichem fan it antwurd. In oerdracht fia in proxy kin CONNECT-, autentikaasje-, trochstjoer- en bestimming-antwurdkoppen yn ien operaasje leverje:
$headerLines = [];
curl_setopt($handle, CURLOPT_HEADERFUNCTION,
function ($handle, $line) use (&$headerLines) {
$headerLines[] = $line;
return strlen($line);
}
);
Dizze callback hâldt de rauwe rigefolchoarder en jout it oantal akseptearre bytes werom. Hy ûntfangt folsleine rigels; mar groepearret se noch net yn antwurden en kiest ek net de koppen fan 'e definitive webside.
Ynterpretearje de folchoarder as blokken
In HTTP-statusrigel begjint in antwurdblok, en in lege rigel einiget syn koppen. Bewarje dy grinzen foardat jo it definitive bestimming-antwurd kieze. Tuskenlizzende autentikaasjepogingen en trochstjoeringen kinne elk blokken tafoegje.
Trailers kinne letter fia de callback oankomme. Hâld genôch parserstatus om se fan 'e begjinkoppen te ûnderskieden, ynstee fan elk letter fjild oan it earste antwurd te heakjen.
Bewarje of ûnderdruk de tunnelbewiis
Lês CURLINFO_HTTP_CONNECTCODE apart foar de CONNECT-status fan 'e HTTPS-tunnel. In akseptearre tunnel bewiist gjin suksesfol antwurd fan 'e webside.
As CONNECT-koppen net nedich binne foar de sammeler, regelet CURLOPT_SUPPRESS_CONNECT_HEADERS har levering oan 'e konfigurearre kopútfier en callback-paden. Kontrolearje stipe yn 'e keppele libcurl en PHP-build. Ûnderdrukking ferienfâldiget it sammeljen, mar ferwideret tunnelbewiis op kopnivo dat by diagnoaze helpe kin.
Werhelje it lichem net mei in fêste offset of troch te sykjen nei in HTML-tag. Kopgrutten ferskille, tuskenlizzende antwurden ferskille, en it lichem kin binêr of leech wêze. In âld releasespesifyk flaterberjocht rjochtfeardiget gjin retten offset.
Hâld lichemsbehanneling apart, en bewarje de oerdrachtsflater tegearre mei de waarnommen antwurdstadia as sammeljen of parsearjen mislearret. Dat ûnderskiedt in ôfbrutsen callback, misfoarme applikaasjegegevens en in wegere proxy-útwikseling.