PHP get_headers: pošaljite HTTP HEAD zahtev kroz proxy
Prosledite kontekst toka direktno u get_headers, svesno izaberite HEAD i odlučite da li ćete pratiti preusmeravanja.
U PHP-u get_headers() prihvata kontekst toka kao treći argument. Na PHP 8 provera zaglavlja za HTTP URL može nositi sopstvenu konfiguraciju proxyja:
$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');
}Proxy je TCP krajnja tačka za HTTP stream wrapper. Zamenite njegov rezervisani host i port neautentifikovanim kandidatom sa liste HTTP proxyja za ovu javnu HTTP proveru. request_fulluri dostavlja puni URI odredišta u liniji HTTP zahteva, kako očekuju mnogi proxyji koji prosleđuju. Ovaj kontekst pripada ovom pozivu; ne menja podrazumevani kontekst koji koriste druga čitanja URL-a.
Uprkos imenu funkcije, njen podrazumevani metod zahteva je GET. Eksplicitni HEAD metod traži od servera metapodatke odgovora bez odgovarajućeg tela odgovora. Server može odbiti HEAD ili ga obraditi drugačije, pa uspešna provera zaglavlja nije dokaz da će kasnije preuzimanje uspeti.
Ovde je praćenje preusmeravanja isključeno radi pregleda prvog odgovora. Zaglavlje Location i status preusmeravanja tada su korisni rezultati, a ne uputstvo za dohvatanje drugog URL-a. Ako provera treba da prati preusmeravanja, svesno promenite tu politiku i uzmite u obzir dodatna zaglavlja odgovora.
Argument false zadržava indeksirani niz zaglavlja. Koristite true kada je asocijativno parsiranje korisnije.