BLOB サービス操作の範囲ヘッダーの指定

BLOB サービスの一部の GET 操作では、標準 HTTP Range ヘッダーの使用をサポートします。 .NET クライアント ライブラリを含む多くの HTTP クライアントは、ヘッダーの Range サイズを 32 ビット整数に制限するため、その値は最大 4 GiB に制限されます。 ブロック BLOB とページ BLOB の両方のサイズが 4 GiB を超える可能性があるため、BLOB サービスは HTTP Range ヘッダーを受け取る操作に対してカスタム範囲ヘッダーx-ms-rangeを受け入れます。

Microsoft Silverlight ライブラリを含む一部の HTTP クライアントでは、Range ヘッダーへのアクセスを制限しています。 x-ms-range ヘッダーを使用して、この制限を回避できます。

要求に x-ms-range ヘッダーが指定されている場合、サービスでは x-ms-range に指定された範囲が使用されます。それ以外の場合は、Range ヘッダーに指定された範囲が使用されます。

注意

Azure ストレージ クライアント ライブラリでは、Range オブジェクトの PutPageProperties プロパティが設定されている場合は、要求に適切な範囲ヘッダーを設定する処理が自動的に実行されます。

Range ヘッダー形式

BLOB サービスでは、Range ヘッダーと x-ms-range ヘッダーとして、2 バイトの範囲を受け入れます。 ヘッダーのバイト範囲は、次のどちらかの形式に従う必要があります。

  • bytes=startByte- (バージョン 2011-08-18 以上を使用する要求の場合)

  • bytes=startByte-endByte (すべてのバージョン (2009-04-14 から最新バージョンまで) を使用する要求の場合)

形式 1: bytes=startByte-

1 つ目の形式 bytes=startByte- は、バージョン 2011-08-18 以上を使用する要求、または SDK 1.6 以上のストレージ エミュレーター サービスに対して使用できます。 この範囲は、オフセット位置 startByte から BLOB の最後までのバイトを返します。 たとえば、BLOB の先頭の 256 バイトより後のすべてのバイト範囲を指定するには、次のいずれかのヘッダーを渡します。

  • Range: bytes=255-

  • x-ms-range: bytes=255-

応答の Content-Length ヘッダーは、オフセット位置から BLOB の最後までのバイト数と等しくなります。 前の例の範囲を長さが 1,024 バイトの BLOB に対して使用した場合、Content-Length は 756 になります。

オフセットが有効な値で、BLOB 全体の長さを超えていない場合、要求はステータス コード 206 (Partial Content) を返します。 オフセットが無効な値で、BLOB 全体の長さを超えている場合、要求はステータス コード 416 (Requested Range Not Satisfiable) を返します。

形式 2: bytes=startByte-endByte

2 つ目の形式 bytes=startByte-endByte は、すべてのバージョン (2009-04-14 から最新バージョンまで) を使用する要求と、ストレージ エミュレーター サービスのすべてのバージョンに対して使用できます。 この範囲は、オフセット位置 startByte から endByte までのバイトを返します。 たとえば、BLOB の先頭の 512 バイトの範囲を指定するには、次のいずれかのヘッダーを渡します。

  • Range: bytes=0-511

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

応答の Content-Length ヘッダーは、各オフセット間のバイト数と等しくなります。 長さが 1,024 バイトの BLOB に対して上記の範囲の例を使用すると、 Content-Length 512 になります。

オフセットが有効な値で、BLOB 全体の長さを超えていない場合、要求はステータス コード 206 (Partial Content) を返します。 オフセットが無効な値で、BLOB 全体の長さを超えている場合、要求はステータス コード 416 (Requested Range Not Satisfiable) を返します。

参照

BLOB サービスの概念
Azure Storage サービスのバージョン管理