PHP get_headers: odoslanie požiadavky HTTP HEAD cez proxy
Odovzdajte kontext streamu priamo do get_headers, vedome zvoľte HEAD a rozhodnite sa, či nasledovať presmerovania.
V PHP get_headers() prijíma kontext streamu ako tretí argument. V PHP 8 môže kontrola hlavičiek pre adresu HTTP niesť vlastnú konfiguráciu proxy:
$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 koncový bod TCP pre obal streamu HTTP. Nahraďte zástupného hostiteľa a port neovereným kandidátom zo zoznamu HTTP proxy pre túto verejnú kontrolu HTTP. request_fulluri dodáva úplné URI cieľa v riadku požiadavky HTTP, ako očakáva mnoho dopredných proxy. Tento kontext patrí tomuto volaniu; nemení predvolený kontext, ktorý používajú iné čítania URL.
Napriek názvu funkcie je predvolenou metódou požiadavky GET. Explicitná metóda HEAD žiada server o metadáta odpovede bez zodpovedajúceho tela odpovede. Server môže HEAD odmietnuť alebo ho spracovať inak, takže úspešná kontrola hlavičiek nie je dôkazom, že neskoršie stiahnutie uspeje.
Tu je nasledovanie presmerovaní vypnuté, aby bolo možné prezrieť prvú odpoveď. Hlavička Location a stav presmerovania sú potom užitočné výsledky namiesto pokynu získať inú adresu URL. Ak má kontrola nasledovať presmerovania, zmeňte túto politiku vedome a počítajte s ďalšími hlavičkami odpovede.
Argument false zachováva indexované pole hlavičiek. Použite true, keď je asociatívne spracovanie užitočnejšie.