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) を返します。