Vérifier l’entête HTTP d’une URL
Comment vérifier les entêtes HTTP avec CURL et PHP
Vérifier le code de retour d'une URL peut notamment être utile pour vérifier si une page/lien existe toujours ou non, ou encore pour vérifier si un site est down.
<?php
$url = 'https://www.oseox.fr';
$timeout = 10;
// Initialisation d'une session cURL
$ch = curl_init($url);
// Forcer l'utilisation d'une nouvelle connexion (pas de cache)
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
// Définition du timeout de la requête (en secondes)
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
// Si l'URL est en HTTPS
if (preg_match('`^https://`i', $url))
{
// Ne pas vérifier la validité du certificat SSL
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
}
// Suivre les redirections [facultatif]
// www.oseox.fr redirige par exemple automatiquement vers oseox.fr
// Le code de retour serait ici 301 si l'on ne suivait pas les redirections
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
// Récupération du contenu retourné par la requête
// sous forme de chaîne de caractères via curl_exec()
// (directement affiché au navigateur client sinon)
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Ne pas récupérer le contenu de la page requêtée
curl_setopt($ch, CURLOPT_NOBODY, true);
// Execution de la requête
curl_exec($ch);
// Récupération du code HTTP retourné par la requête
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// Fermeture de la session cURL
curl_close($ch);
echo $http_code;
?>
Les principaux entêtes HTTP utiles sont les suivants :
- 200 : Ok, la requête a été traitée avec succès
- 301 : Redirection permanente (si
CURLOPT_FOLLOWLOCATION = false) - 302 : Redirection temporaire (si
CURLOPT_FOLLOWLOCATION = false) - 401 : Accès refusé (demande d'authentification HTTP)
- 403 : Accès refusé (sans demande d'authentification)
- 404 : Page non trouvée
- 500 : Erreur interne du serveur (peut résulter d'un plantage site/serveur)
- 503 : Service indisponible (peut résulter d'un plantage site/serveur)


