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.

Articoli correlati