PHP get_headers: inviare una richiesta HTTP HEAD tramite un proxy
Passa un contesto di flusso direttamente a get_headers, scegli HEAD deliberatamente e decidi se seguire i reindirizzamenti.
In PHP, get_headers() accetta un contesto di flusso come terzo argomento. Su PHP 8, un controllo delle intestazioni per un URL HTTP può portare la propria configurazione del 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');
}Il proxy è un endpoint TCP per il wrapper di flusso HTTP. Sostituisci il suo host e la sua porta segnaposto con un candidato non autenticato dall'elenco di proxy HTTP per questo controllo HTTP pubblico. request_fulluri fornisce l'URI di destinazione completo nella riga di richiesta HTTP, come si aspettano molti proxy inoltro. Questo contesto appartiene a questa chiamata; non cambia il contesto predefinito usato dalle altre letture URL.
Nonostante il nome della funzione, il suo metodo di richiesta predefinito è GET. Il metodo HEAD esplicito chiede al server i metadati della risposta senza il corrispondente corpo della risposta. Un server può rifiutare HEAD o gestirlo diversamente, quindi un controllo delle intestazioni riuscito non è prova che un download successivo riuscirà.
Qui il seguire i reindirizzamenti è disattivato per ispezionare la prima risposta. Un'intestazione Location e uno stato di reindirizzamento sono allora risultati utili invece che un'istruzione a recuperare un altro URL. Se il controllo deve seguire i reindirizzamenti, cambia quella politica deliberatamente e tieni conto delle intestazioni di risposta aggiuntive.
L'argomento false mantiene un array di intestazioni indicizzato. Usa true quando l'analisi associativa è più utile.