Spécification de l’en-tête Range pour les opérations de service BLOBSpecifying the range header for Blob service operations

Plusieurs opérations GET de service BLOB prennent en charge l'utilisation de l'en-tête HTTP Range standard.Several Blob service GET operations support the use of the standard HTTP Range header. De nombreux clients HTTP, y compris la bibliothèque cliente .NET, limitent la taille de l' Range en-tête à un entier 32 bits, et sa valeur est donc limitée à un maximum de 4 Gio.Many HTTP clients, including the .NET client library, limit the size of the Range header to a 32-bit integer, and thus its value is limited to a maximum of 4 GiB. É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 de plage personnalisé x-ms-range pour toute opération qui accepte un Range en-tête http.Since both block blobs and page blobs can be larger than 4 GiB in size, the Blob service accepts a custom range header x-ms-range for any operation that takes an HTTP Range header.

Certains clients HTTP, y compris la bibliothèque Microsoft Silverlight, limitent l'accès à l'en-tête Range.Some HTTP clients, including the Microsoft Silverlight library, limit access to the Range header altogether. L'en-tête x-ms-range peut être utilisé pour éviter ces limitations.The x-ms-range header can be used to circumvent these limitations as well.

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.If the x-ms-range header is specified on a request, then the service uses the range specified by x-ms-range; otherwise, the range specified by the Range header is used.

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.The Azure Storage Client Library automatically handles setting the appropriate range header on the request when you set the Range property of the PutPageProperties object.

Formats d'en-tête RangeRange Header Formats

Le service BLOB accepte deux plages d'octets pour les en-têtes Range et x-ms-range.The Blob service accepts two byte ranges for the Range and x-ms-range headers. La plage d'octets doit utiliser l'un ou l'autre des formats suivants pour les en-têtes :The byte range must adhere to either of the following formats for the headers:

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

  • bytes=startByte-endByte pour les demandes qui utilisent toutes les versions (à partir de la version du 14/04/2009)bytes=startByte-endByte for requests using all versions (2009-04-14 through the newest version)

Format 1 : octets=startByte-Format 1: bytes=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.The first format, bytes=startByte-, is available only for requests using version 2011-08-18 or newer, or the storage emulator service in SDK 1.6 or newer. Cette plage renvoie des octets à partir du décalage startByte jusqu'à la fin de l'objet blob.This range will return bytes from the offset startByte through the end of the 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 :For example, to specify a range encompassing all bytes after the first 256 bytes of a blob, you can pass in either of the following headers:

  • 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.The Content-Length header in the response is equal to the number of bytes from the offset until the end of the blob. En utilisant l’exemple de plage ci-dessus pour un objet blob d’une longueur de 1 024 octets, Content-Length serait 756.Using the example range above for a blob of 1,024 bytes in length, Content-Length would be 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).If the offset is valid and does not exceed the blob’s total length, the request will return an status code 206 (Partial Content). 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).If the offset is invalid and exceeds the blob’s total length, the request will return status code 416 (Requested Range Not Satisfiable).

Format 2 : octets=startByte-endByteFormat 2: bytes=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.The second format, bytes=startByte-endByte, is available for requests using all versions (2009-04-14 through the newest version), and for all versions of the storage emulator service. Cette plage renvoie des octets à partir du décalage startByte jusqu'à endByte.This range will return bytes from the offset startByte through 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 :For example, to specify a range encompassing the first 512 bytes of a blob, you would pass in either of the following headers:

  • 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.The Content-Length header in the response is equal to the number of bytes between each offset. En utilisant l'exemple de plage ci-dessus pour un objet blob de 1 024 octets, Content-Length est égal à 512.Using the example range above for a blob of 1,024 bytes in length, Content-Length would be 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).If the offset is valid and does not exceed the blob’s total length, the request will return an status code 206 (Partial Content). 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).If the offset is invalid and exceeds the blob’s total length, the request will return status code 416 (Requested Range Not Satisfiable).

Voir aussiSee Also

Concepts du service BLOB Blob Service Concepts
Versions des services de stockage AzureVersioning for the Azure Storage Services