Spécification de l’en-tête de plage pour les opérations de service Blob

Plusieurs opérations GET de service BLOB prennent en charge l'utilisation de l'en-tête HTTP Range standard. De nombreux clients HTTP, y compris la bibliothèque cliente .NET, limitent la taille de l’en-tête Range à un entier 32 bits, et sa valeur est donc limitée à un maximum de 4 Gio. Étant donné que les objets blob de blocs et les objets blob de pages peuvent avoir une taille supérieure à 4 Gio, le service Blob accepte un en-tête x-ms-range de plage personnalisé pour toute opération qui prend un en-tête HTTP Range .

Certains clients HTTP, y compris la bibliothèque Microsoft Silverlight, limitent l'accès à l'en-tête Range. L'en-tête x-ms-range peut être utilisé pour éviter ces limitations.

Si l'en-tête x-ms-range est spécifié sur une demande, le service utilise la plage spécifiée par x-ms-range ; dans le cas contraire, la plage spécifiée par l'en-tête Range est utilisée.

Notes

La bibliothèque cliente de Stockage Azure gère automatiquement la définition de l'en-tête de plage approprié dans la demande lorsque vous définissez la propriété Range de l'objet PutPageProperties.

Formats d'en-tête Range

Le service BLOB accepte deux plages d'octets pour les en-têtes Range et x-ms-range. La plage d'octets doit utiliser l'un ou l'autre des formats suivants pour les en-têtes :

  • bytes=startByte- pour les demandes qui utilisent la version du 18/08/2011 ou une version ultérieure.

  • bytes=startByte-endByte pour les demandes qui utilisent toutes les versions (à partir de la version du 14/04/2009)

Format 1 : octets=startByte-

Le premier format, bytes=startByte-, est disponible uniquement pour les demandes qui utilisent la version du 18/08/2011 ou les versions ultérieures, ou le service de l'émulateur de stockage dans le Kit de développement logiciel (SDK) 1.6 ou ultérieur. Cette plage renvoie des octets à partir du décalage startByte jusqu'à la fin de l'objet blob. Par exemple, pour spécifier une plage englobant tous les octets après les 256 premiers octets d'un objet blob, vous pouvez transmettre l'un des en-têtes suivants :

  • Range: bytes=255-

  • x-ms-range: bytes=255-

L'en-tête Content-Length dans la réponse est égal au nombre d'octets à partir du décalage jusqu'à la fin de l'objet blob. L’exemple de plage ci-dessus pour un objet blob de 1 024 octets Content-Length serait de 756.

Si le décalage est valide et ne dépasse pas la longueur totale de l'objet blob, la demande renvoie le code d'état 206 (Contenu partiel). Si le décalage n'est pas valide et dépasse la longueur totale de l'objet blob, la demande renvoie le code d'état 416 (Plage demandée non satisfaisante).

Format 2 : octets=startByte-endByte

Le deuxième format, bytes=startByte-endByte, est disponible pour les demandes qui utilisent toutes les versions (à partir de la version du 14/04/2009), et pour toutes les versions du service de l'émulateur de stockage. Cette plage renvoie des octets à partir du décalage startByte jusqu'à endByte. Par exemple, pour spécifier une plage englobant les 512 premiers octets d'un objet blob, vous pouvez transmettre l'un des en-têtes suivants :

  • Range: bytes=0-511

  • x-ms-range: bytes=0-511

L'en-tête Content-Length dans la réponse est égal au nombre d'octets entre chaque décalage. En utilisant l'exemple de plage ci-dessus pour un objet blob de 1 024 octets, Content-Length est égal à 512.

Si le décalage est valide et ne dépasse pas la longueur totale de l'objet blob, la demande renvoie le code d'état 206 (Contenu partiel). Si le décalage n'est pas valide et dépasse la longueur totale de l'objet blob, la demande renvoie le code d'état 416 (Plage demandée non satisfaisante).

Voir aussi

Blob Service Concepts
Versions des services de stockage Azure