PHP get_headers: trimiterea unei cereri HTTP HEAD printr-un proxy
Transmiteți un context de flux direct către get_headers, alegeți HEAD deliberat și decideți dacă urmați redirecționările.
În PHP, get_headers() acceptă un context de flux ca al treilea argument. Pe PHP 8, o verificare a antetelor pentru un URL HTTP poate purta propria configurație de 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-ul este un punct final TCP pentru învelișul de flux HTTP. Înlocuiți gazda și portul substituent cu un candidat neautentificat din lista de proxy-uri HTTP pentru această verificare HTTP publică. request_fulluri furnizează URI-ul complet al destinației în linia cererii HTTP, așa cum se așteaptă multe proxy-uri de redirecționare. Acest context aparține acestui apel; nu modifică contextul implicit folosit de alte citiri de URL.
În ciuda numelui funcției, metoda implicită de cerere este GET. Metoda HEAD explicită cere serverului metadatele răspunsului fără corpul de răspuns corespunzător. Un server poate respinge HEAD sau îl poate trata diferit, așa că o verificare reușită a antetelor nu dovedește că o descărcare ulterioară va reuși.
Aici, urmărirea redirecționărilor este dezactivată pentru a inspecta primul răspuns. Un antet Location și un status de redirecționare sunt atunci rezultate utile în loc de o instrucțiune de a prelua alt URL. Dacă verificarea trebuie să urmeze redirecționările, schimbați această politică în mod deliberat și țineți cont de antetele de răspuns suplimentare.
Argumentul false păstrează o matrice de antete indexată. Folosiți true când analiza asociativă este mai utilă.