Contenu

    Réponse du serveur 416 Range Not Satisfiable

    HTTP Status Code 416 (Range Not Satisfiable)

    Le code de statut HTTP 416 indique que le serveur ne peut pas satisfaire la plage de données demandée. Cela se produit généralement lorsque le client demande une partie d'une ressource, mais que la plage spécifiée dépasse les données disponibles. Comprendre ce code de statut est essentiel pour le développement web et la gestion des erreurs.

    416 - Range Not Satisfiable

    Causes de l'apparition du code de statut 416

    • Plage mal définie

      Le client peut commettre une erreur en spécifiant une plage qui dépasse la taille du fichier. Par exemple, si un fichier fait 1000 octets, une demande pour les octets 1000 à 2000 entraînera une erreur 416.

    • Données absentes sur le serveur

      Il peut arriver qu'une ressource ait été supprimée ou modifiée, rendant le champ de la plage demandé supérieur aux données disponibles.

    • En-têtes incorrects

      Des en-têtes Range mal configurés peuvent également conduire à cette erreur. Par exemple, une syntaxe incorrecte dans l'en-tête peut empêcher le serveur de comprendre la demande.

    Exemples pratiques

    1. Exemple avec un fichier audio

      Imaginons qu'un client demande une plage de 500 à 1500 octets d'un fichier audio qui ne fait que 1000 octets. Le serveur répondra avec un code 416, car la plage demandée dépasse la longueur du fichier.

    2. Exemple avec une image

      Si un client tente de récupérer une partie d'une image qui a été modifiée, il peut ne pas être au courant des nouvelles dimensions. Par exemple, demander les octets 500 à 1500 sur un fichier qui a été réduit à 800 octets entraînera également une erreur 416.

    3. Exemple avec un fichier texte

      Un client qui demande une plage de 0 à 200 d'un fichier texte contenant seulement 150 octets obtiendra une erreur 416, car la plage demandée ne peut pas être satisfaite.

    Correction de l'erreur 416 dans différents langages de programmation

    Python (utilisation de la bibliothèque requests)

    import requests
    
    url = "http://example.com/audio.mp3"
    headers = {"Range": "bytes=500-1500"}
    response = requests.get(url, headers=headers)
    
    if response.status_code == 416:
        print("Erreur: Plage demandée non satisfaisable.")

    JavaScript (utilisation de Fetch API)

    fetch("http://example.com/image.jpg", {
        headers: {
            "Range": "bytes=500-1500"
        }
    })
    .then(response => {
        if (response.status === 416) {
            console.log("Erreur: Plage demandée non satisfaisable.");
        }
    });

    PHP (utilisation de cURL)

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://example.com/textfile.txt");
    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Range: bytes=0-200"));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    
    if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == 416) {
        echo "Erreur: Plage demandée non satisfaisable.";
    }
    curl_close($ch);

    Tableau récapitulatif des erreurs et solutions

    Erreur Cause Solution
    416 Plage mal définie Vérifier la taille du fichier avant de faire une demande.
    416 Données absentes sur le serveur Confirmer que la ressource existe et est accessible.
    416 En-têtes incorrects Valider la syntaxe des en-têtes Range.