En PHP, get_headers() accepte un contexte de flux comme troisième argument. Sous PHP 8, une vérification d'en-têtes pour une URL HTTP peut porter sa propre configuration 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');
}

Le proxy est un point de terminaison TCP pour le gestionnaire de flux HTTP. Remplacez son hôte et son port fictifs par un candidat non authentifié de la liste de proxys HTTP pour cette vérification HTTP publique. request_fulluri fournit l'URI de destination complète dans la ligne de requête HTTP, comme l'attendent de nombreux proxys de transfert. Ce contexte appartient à cet appel ; il ne modifie pas le contexte par défaut utilisé par les autres lectures d'URL.

Malgré le nom de la fonction, sa méthode de requête par défaut est GET. La méthode HEAD explicite demande au serveur les métadonnées de la réponse sans le corps de réponse correspondant. Un serveur peut refuser HEAD ou le traiter différemment, donc une vérification d'en-têtes réussie ne prouve pas qu'un téléchargement ultérieur réussira.

Ici, le suivi des redirections est désactivé afin d'inspecter la première réponse. Un en-tête Location et un statut de redirection sont alors des résultats utiles plutôt qu'une instruction d'aller chercher une autre URL. Si la vérification doit suivre les redirections, modifiez cette politique délibérément et tenez compte des en-têtes de réponse supplémentaires.

L'argument false conserve un tableau d'en-têtes indexé. Utilisez true lorsque l'analyse associative est plus utile.

Articles similaires