PHP get_headers: skicka en HTTP HEAD-förfrågan via en proxy
Skicka en strömkontext direkt till get_headers, välj HEAD medvetet och avgör om omdirigeringar ska följas.
I PHP accepterar get_headers() en strömkontext som sitt tredje argument. På PHP 8 kan en rubrikkontroll för en HTTP-URL bära sin egen proxykonfiguration:
$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');
}Proxyn är en TCP-slutpunkt för HTTP-strömomslaget. Ersätt dess platshållarvärd och -port med en oautentiserad kandidat från HTTP-proxylistan för denna offentliga HTTP-kontroll. request_fulluri levererar den fullständiga mål-URI:n i HTTP-förfrågningsraden, som många vidarebefordrande proxys förväntar sig. Denna kontext tillhör detta anrop; den ändrar inte standardkontexten som andra URL-läsningar använder.
Trots funktionens namn är standardförfrågningsmetoden GET. Den uttryckliga HEAD-metoden ber servern om svarsmetadata utan motsvarande svarskropp. En server kan avvisa HEAD eller hantera det annorlunda, så en lyckad rubrikkontroll är inte bevis för att en senare nedladdning lyckas.
Här är följning av omdirigeringar avstängd för att inspektera det första svaret. En Location-rubrik och en omdirigeringsstatus är då användbara resultat i stället för en instruktion att hämta en annan URL. Om kontrollen ska följa omdirigeringar, ändra den policyn medvetet och ta hänsyn till de extra svarsrubrikerna.
Argumentet false behåller en indexerad rubrikmatris. Använd true när associativ parsning är mer användbar.