PHP get_headers: send en HTTP HEAD-forespørsel gjennom en proxy
Send en strømkontekst direkte til get_headers, velg HEAD bevisst og avgjør om omdirigeringer skal følges.
I PHP godtar get_headers() en strømkontekst som sitt tredje argument. På PHP 8 kan en header-sjekk for en HTTP-URL ha sin egen proxykonfigurasjon:
$context = stream_context_create([
'http' => [
'proxy' => 'tcp://proxy.example.net:8080',
'request_fulluri' => true,
'method' => 'HEAD',
'follow_location' => 0,
'timeout' => 10,
],
]);
$headers = get_headers('http://example.net/file.zip', false, $context);
if ($headers === false) {
throw new RuntimeException('Header request failed');
}Proxyen er et TCP-endepunkt for HTTP-strøm-wrapperen. Bytt ut plassholderen for vert og port med en uautentisert kandidat fra HTTP-proxylisten for denne offentlige HTTP-sjekken. request_fulluri leverer den fullstendige mål-URI-en i HTTP-forespørselslinjen, slik mange videresendende proxyer forventer. Denne konteksten tilhører dette kallet; den endrer ikke standardkonteksten som andre URL-lesinger bruker.
Til tross for navnet på funksjonen er standardforespørselsmetoden GET. Den eksplisitte HEAD-metoden ber serveren om svar-metadata uten den tilhørende svarteksten. En server kan avvise HEAD eller håndtere det annerledes, så en vellykket header-sjekk er ikke bevis for at en senere nedlasting lykkes.
Her er følging av omdirigeringer slått av for å inspisere den første responsen. En Location-header og en omdirigeringsstatus er da nyttige resultater i stedet for en instruks om å hente en annen URL. Hvis sjekken skal følge omdirigeringer, endre den policyen bevisst og ta høyde for de ekstra svarheaderne.
Argumentet false beholder en indeksert header-matrise. Bruk true når assosiativ parsing er nyttigere.