Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. HTTP
  3. Référence
  4. En-têtes
  5. Range

Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in EnglishAlways switch to English

En-tête Range

Baseline Widely available

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.

L'en-tête de requête HTTPRange indique la partie d'une ressource que le serveur doit retourner.Plusieurs parties peuvent être demandées en même temps dans un seul en-têteRange, et le serveur peut renvoyer ces plages dans un document multipartie.Si le serveur renvoie des plages, il utilise le code d'état206 Partial Content pour la réponse.Si les plages sont invalides, le serveur retourne l'erreur416 Range Not Satisfiable.

Un serveur qui ne prend pas en charge les requêtes de plage peut ignorer l'en-têteRange et retourner la ressource entière avec un code d'état200.Les anciens navigateurs utilisaient un en-tête de réponseAccept-Ranges: none pour désactiver des fonctionnalités comme « pause » ou « reprendre » dans les gestionnaires de téléchargement, mais comme le fait qu'un serveur ignore l'en-têteRange a la même signification que de répondre avecAccept-Ranges: none, cet en-tête est rarement utilisé de cette manière.

Actuellement, seules lesunitésbytes sont enregistrées(angl.), ce sont desdécalages (indexés à partir de zéro et inclusifs).Si les données demandées ont uncodage de contenu appliqué, chaque plage d'octets représente la séquence d'octets encodés, et non les octets obtenus après décodage.

L'en-tête est unen-tête de requête autorisé par CORS lorsque la directive spécifie une seule plage d'octets.

Type d'en-têteEn-tête de requête
En-tête de requête interditNon

Syntaxe

http
Range: <unit>=<range-start>-Range: <unit>=<range-start>-<range-end>Range: <unit>=<range-start>-<range-end>, …, <range-startN>-<range-endN>Range: <unit>=-<suffix-length>

Directives

<unit>

L'unité dans laquelle les plages sont définies. Actuellement, seule l'unitébytes est enregistrée.

<range-start>

Un entier dans l'unité donnée indiquant la position de début de la plage demandée.

<range-end>

Un entier dans l'unité donnée indiquant la position de fin de la plage demandée. Cette valeur est optionnelle et, si elle est omise, la fin de la ressource est utilisée comme fin de la plage.

<suffix-length>

Un entier indiquant le nombre d'unités à la fin de la ressource à retourner.

Exemples

Les exemples suivants montrent comment effectuer des requêtes en utilisant l'en-têteRange pour des requêtes autorisées par CORS, et pour demander plusieurs plages.D'autres exemples sont disponibles dans le guideRequêtes de plage HTTP.

Plages d'octets uniques et requêtes autorisées par CORS

L'en-têteRange est unen-tête de requête autorisé par CORS lorsque la valeur est une seule plage d'octets.Cela signifie qu'il peut être utilisé dans des requêtes inter-origines sans déclencher depré-vérification, ce qui est utile pour demander des médias et reprendre des téléchargements.

L'exemple suivant demande les 500 premiers octets d'une ressource :

http
Range: bytes=0-499

Pour demander les 500 octets suivants :

http
Range: bytes=500-999

Omettre la position de fin demande toutes les unités restantes de la ressource, ainsi les 100 derniers octets d'une ressource de 1000 octets peuvent être demandés avec :

http
Range: bytes=900-

Sinon, si la taille d'une ressource est inconnue, lesn derniers octets peuvent être demandés en utilisant une plage suffixe de-n :

http
Range: bytes=-100

Demander plusieurs plages

Pour une ressource d'une longueur de 10 000 octets, l'exemple suivant demande trois plages distinctes ;200-999 (800 octets),2000-2499 (500 octets), et enfin9500-.La valeur de spécification de plage9500- omet une position de fin ce qui indique que tous les octets à partir de 9500 font partie de la troisième plage (500 octets).

http
Range: bytes=200-999, 2000-2499, 9500-

Cet exemple demande les 500 premiers et les 500 derniers octets du fichier.La requête peut être rejetée par le serveur si ces plages se chevauchent (par exemple, si la ressource demandée fait moins de 1000 octets).

http
Range: bytes=0-499, -500

Vérifier si un serveur prend en charge les requêtes de plage

La commande curl suivante effectue une requêteHEAD pour une image :

bash
curl -v --http1.1 -I https://i.imgur.com/z4d4kWk.jpg# ou en utilisant la méthode OPTIONS :# curl -v --http1.1 -X OPTIONS https://i.imgur.com/z4d4kWk.jpg

Ceci donne la requête HTTP suivante :

http
HEAD /z4d4kWk.jpg HTTP/1.1Host: i.imgur.comUser-Agent: curl/8.7.1Accept: */*

Le serveur répond avec un code200, et l'en-têteAccept-Ranges: bytes est présent (certains en-têtes sont omis pour la clarté) :

http
HTTP/1.1 200 OKConnection: keep-aliveContent-Length: 146515Content-Type: image/jpeg…Accept-Ranges: bytes

Récupérer une plage depuis une URLblob

L'URLblob: prend également en charge les requêtes de plage en utilisantfetch().

js
const blob = new Blob(["Hello, world!"], { type: "text/plain" });const url = URL.createObjectURL(blob);fetch(url, {  headers: {    Range: "bytes=7-11",  },})  .then((response) => response.text())  .then((text) => console.log(text)); // "world"

Spécifications

Specification
HTTP Semantics
# field.range

Compatibilité des navigateurs

Voir aussi

Help improve MDN

Learn how to contribute

Cette page a été modifiée le par lescontributeurs du MDN.


[8]ページ先頭

©2009-2026 Movatter.jp