PHP get_headers: send en HTTP HEAD-anmodning gennem en proxy
Send en stream-kontekst direkte til get_headers, vælg HEAD bevidst, og afgør, om omdirigeringer skal følges.
I PHP accepterer get_headers() en stream-kontekst som sit tredje argument. På PHP 8 kan et header-tjek for en HTTP-URL bære sin egen proxy-konfiguration:
$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');
}Proxien er et TCP-endepunkt for HTTP-stream-wrapperen. Erstat dens pladsholder-vært og -port med en uautoriseret kandidat fra HTTP-proxylisten til dette offentlige HTTP-tjek. request_fulluri leverer den fulde destinations-URI i HTTP-anmodningslinjen, som mange forward-proxier forventer. Denne kontekst hører til dette kald; den ændrer ikke den standardkontekst, som andre URL-læsninger bruger.
På trods af funktionens navn er dens standardanmodningsmetode GET. Den eksplicitte HEAD-metode beder serveren om svarmetadata uden den tilsvarende svartekst. En server kan afvise HEAD eller håndtere det anderledes, så et vellykket header-tjek er ikke bevis for, at en senere download lykkes.
Her er følgning af omdirigeringer slået fra for at inspicere det første svar. En Location-header og en omdirigeringsstatus er så nyttige resultater i stedet for en instruktion om at hente en anden URL. Hvis tjekket skal følge omdirigeringer, ændr den politik bevidst, og tag højde for de ekstra svarheadere.
Argumentet false bevarer et indekseret header-array. Brug true, når associativ parsing er mere nyttig.