PHP get_headers: een HTTP HEAD-verzoek via een proxy versturen
Geef een stream-context rechtstreeks aan get_headers, kies HEAD bewust en bepaal of omleidingen gevolgd moeten worden.
In PHP accepteert get_headers() een stream-context als derde argument. Op PHP 8 kan een headercontrole voor een HTTP-URL zijn eigen proxyconfiguratie meedragen:
$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');
}De proxy is een TCP-eindpunt voor de HTTP-streamwrapper. Vervang de plaatsaanduiding voor host en poort door een niet-geauthenticeerde kandidaat uit de HTTP-proxylijst voor deze openbare HTTP-controle. request_fulluri levert de volledige bestemmings-URI in de HTTP-verzoekregel, zoals veel doorsturende proxy's verwachten. Deze context hoort bij deze aanroep; hij verandert niet de standaardcontext die andere URL-lezingen gebruiken.
Ondanks de naam van de functie is de standaard verzoekmethode GET. De expliciete HEAD-methode vraagt de server om responsmetadata zonder de bijbehorende responsbody. Een server kan HEAD weigeren of anders afhandelen, dus een geslaagde headercontrole is geen bewijs dat een latere download zal slagen.
Hier is het volgen van omleidingen uitgeschakeld om de eerste respons te inspecteren. Een Location-header en een omleidingsstatus zijn dan nuttige resultaten in plaats van een opdracht om een andere URL op te halen. Als de controle omleidingen moet volgen, wijzig dat beleid dan bewust en houd rekening met de extra responsheaders.
Het argument false behoudt een geïndexeerde headerarray. Gebruik true wanneer associatief parsen nuttiger is.