1. Introduction
Les clients HTTP rencontrent souvent des transferts de données interrompus à la suite de l'annulation d'une requête ou de la rupture d'une connexion. Lorsqu'un client a stocké une représentation partielle, il est souhaitable de demander le reste de cette représentation dans une requête ultérieure plutôt que de transférer la représentation entière. De même, les appareils disposant d'un stockage local limité peuvent tirer parti de la possibilité de ne demander qu'un sous-ensemble d'une représentation plus grande, par exemple une seule page d'un document très volumineux ou les dimensions d'une image incorporée.
Le présent document définit les requêtes de plage HTTP/1.1, les réponses partielles et le type de média multipart/byteranges. Les requêtes de plage sont une fonctionnalité optionnelle (OPTIONAL) de HTTP, conçue pour qu'un destinataire qui n'implémente pas cette fonctionnalité (ou ne la prend pas en charge pour la ressource cible) puisse répondre comme s'il s'agissait d'une requête GET normale sans nuire à l'interopérabilité. Les réponses partielles sont signalées par un code d'état distinct afin que les caches qui n'implémenteraient pas cette fonctionnalité ne les confondent pas avec des réponses complètes.
Bien que le mécanisme de requête de plage soit conçu pour permettre des types de plages extensibles, la présente spécification ne définit que les requêtes de plages d'octets.
1.1 Conformité et traitement des erreurs
Les mots clés "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" et "OPTIONAL" du présent document doivent être interprétés comme décrit dans [RFC2119].
Les critères de conformité et les considérations relatives au traitement des erreurs sont définis à la section 2.5 de [RFC7230].
1.2 Notation syntaxique
La présente spécification utilise la notation Augmented Backus-Naur Form (ABNF) de [RFC5234], avec l'extension de liste définie à la section 7 de [RFC7230], qui permet de définir de façon compacte des listes séparées par des virgules au moyen de l'opérateur '#' (de la même manière que l'opérateur '*' indique une répétition). L'annexe C décrit les règles importées d'autres documents. L'annexe D présente la grammaire regroupée, tous les opérateurs de liste étant développés en notation ABNF standard.