HTTPQUERY
Français

Content-Range

Utilisation

L’en-tête Content-Range apparaît dans les réponses 206 Partial Content lorsqu’un serveur satisfait une requête Range en ne livrant qu’une partie d’une ressource. Cet en-tête indique la plage d’octets du contenu partiel ainsi que la taille totale de la ressource complète.

Les requêtes de plage permettent des téléchargements efficaces. Un client interrompu pendant le transfert d’un gros fichier reprend là où la connexion a été coupée au lieu de tout recommencer. Les lecteurs multimédias utilisent les requêtes de plage pour se positionner à un endroit précis d’un fichier audio ou vidéo sans télécharger le flux entier.

Les serveurs annoncent la prise en charge des requêtes de plage via l’en-tête Accept-Ranges, généralement réglé sur bytes. Lorsqu’une requête de plage porte sur une plage d’octets dépassant les limites de la ressource, le serveur répond 416 Range Not Satisfiable et inclut un en-tête Content-Range indiquant la taille réelle de la ressource.

La syntaxe suit un format structuré en trois composants : l’unité (presque toujours bytes), la plage d’octets et la taille complète.

Content-Range: <unit> <range-start>-<range-end>/<size>

unit

Le type d’unité de la plage. La valeur bytes est la seule unité largement implémentée.

range-start

Un entier commençant à zéro indiquant le premier octet de la plage renvoyée.

range-end

Un entier commençant à zéro indiquant le dernier octet de la plage renvoyée, inclus.

size

La taille totale de la ressource complète en octets. Un astérisque (*) remplace la taille lorsque la longueur totale est inconnue, comme pour du contenu en flux continu ou généré dynamiquement.

Exemple

Un client reprend un téléchargement à partir de l’octet 1000 d’un fichier dont la taille totale est de 65 000 octets. Le serveur renvoie les octets 1000 à 2000 inclus.

Content-Range: bytes 1000-2000/65000

Une ressource diffusée en continu livre une plage sans connaître la taille totale. L’astérisque indique une longueur complète inconnue.

Content-Range: bytes 1000-2000/*

Un serveur rejette une requête de plage parce que les octets demandés dépassent la taille de la ressource. La réponse porte un statut 416 Range Not Satisfiable et indique la taille réelle.

HTTP/1.1 416 Range Not Satisfiable
Content-Range: bytes */50000

Une réponse multipart livre plusieurs plages en une seule réponse. Chaque partie comporte son propre en-tête Content-Range au sein du corps multipart/byteranges.

HTTP/1.1 206 Partial Content
Content-Type: multipart/byteranges; boundary=BOUNDARY

--BOUNDARY
Content-Type: text/plain
Content-Range: bytes 0-499/10000

[first 500 bytes]
--BOUNDARY
Content-Type: text/plain
Content-Range: bytes 9500-9999/10000

[last 500 bytes]
--BOUNDARY--

Remarque

Content-Length indique la taille totale du corps du message en octets. Content-Range identifie quel segment d’octets précis de la ressource complète la réponse courante contient. Une réponse complète utilise Content-Length seul ; une réponse 206 Partial Content utilise les deux en-têtes ensemble.