セールス: 1-800-867-1380

BLOB サービス操作の条件ヘッダーの指定

更新日: 2014年11月

BLOB サービスの一部の操作では、条件ヘッダーを使用できます。条件ヘッダーを指定すると、指定した条件が満たされた場合に限り操作を実行できます。

BLOB サービスの条件ヘッダーは、HTTP/1.1 プロトコル仕様に準拠しています。

サポートされている条件ヘッダーを次の表に示します。

 

条件ヘッダー 説明

If-Modified-Since

DateTime 値。このヘッダーを指定すると、指定した時刻以降にリソースが変更されている場合に限り操作が実行されます。

If-Unmodified-Since

DateTime 値。このヘッダーを指定すると、指定した日付/時刻以降にリソースが変更されていない場合に限り操作が実行されます。

If-Match

ETag 値。このヘッダーを指定すると、リソースの ETag が指定値と一致する場合に限り操作が実行されます。バージョン 2011-08-18 以降では、引用符で囲んで ETag を指定できます。

If-None-Match

ETag 値またはワイルドカード文字 (*)。このヘッダーを指定すると、リソースの ETag が指定値と一致しない場合に限り操作が実行されます。バージョン 2011-08-18 以降では、引用符で囲んで ETag を指定できます。

ワイルドカード文字 (*) を指定すると、リソースが存在しない場合に限り操作が実行されます。リソースが存在する場合は、操作は失敗します。

バージョン 2013-08-15 以降では、Get Blob (REST API) 操作と Get Blob Properties (REST API) 操作で複数の条件ヘッダーがサポートされます。サポートされている条件ヘッダーの任意の組み合わせを指定できます。BLOB サービスは、次の式に基づいてこれらの条件を評価します。

If-Match && If-Unmodified-Since && (If-None-Match || If-Modified-Since)

また、If-Match および If-None-Match に複数のコンマ区切り値を指定することもできます。If-Match に複数の値を指定すると、BLOB サービスは、指定されたすべての値に対して論理 OR 操作を実行してから、式全体を評価します。if-None-Match に複数の値を指定すると、サービスは、論理 AND 操作を実行してから、式全体を評価します。If-Modified-SinceIf-Unmodified-Since に複数の値を指定することはサポートされていません。その場合はエラー コード 400 (Bad Request) が返されます。

この機能は、HTTP/1.1 仕様に準拠し、コンテンツ配信ネットワーク (CDN) またはプロキシ サーバーによって転送中の要求に追加の条件ヘッダーが追加されるシナリオに対応するために有効化されています。条件ヘッダーの異なる組み合わせの例を以下に示します。

例 1:

Get Blob (REST API) 要求に If-Match ヘッダーと If-Modified-Since ヘッダーが含まれているとします。次の表に、ヘッダーが個別に評価された場合の結果と、ヘッダーの組み合わせが評価された場合の結果を示します。

 

条件ヘッダー 個別に評価された場合の結果 組み合わせが評価された場合の結果

If-Match

412 (Precondition Failed)

412 (Precondition Failed)

If-Modified-Since

200 (OK)

If-Match

412 (Precondition Failed)

412 (Precondition Failed)

If-Modified-Since

304 (Not Modified)

If-Match

200 (OK)

200 (OK)

If-Modified-Since

200 (OK)

If-Match

200 (OK)

304 (Not Modified)

If-Modified-Since

304 (Not Modified)

例 2:

要求に If-None-Match ヘッダーと If-Modified-Since ヘッダーが含まれているとします。

 

条件ヘッダー 個別に評価された場合の結果 組み合わせが評価された場合の結果

If-None-Match

304 (Not Modified)

200 (OK)

If-Modified-Since

200 (OK)

If-None-Match

200 (OK)

200 (OK)

If-Modified-Since

200 (OK)

If-None-Match

200 (OK)

200 (OK)

If-Modified-Since

304 (Not Modified)

If-None-Match

304 (Not Modified)

304 (Not Modified)

If-Modified-Since

304 (Not Modified)

例 3:

要求に If-Modified-SinceIf-Match、および If-Unmodified-Since の各ヘッダーが含まれているとします。

 

条件ヘッダー 個別に評価された場合の結果 組み合わせが評価された場合の結果

If-Modified-Since

200 (OK)

412 (Precondition Failed)

If-Match

412 (Precondition Failed)

If-Unmodified-Since

200 (OK)

If-Modified-Since

200 (OK)

412 (Precondition Failed)

If-Match

200 (OK)

If-Unmodified-Since

412 (Precondition Failed)

If-Modified-Since

304 (Not Modified)

412 (Precondition Failed)

If-Match

200 (OK)

If-Unmodified-Since

412 (Precondition Failed)

If-Modified-Since

304 (Not Modified)

304 (Not Modified)

If-Match

200 (OK)

If-Unmodified-Since

200 (OK)

例 4:

要求に If-Modified-SinceIf-None-MatchIf-Unmodified-Since、および If-Match の各ヘッダーが含まれているとします。

 

組み合わせ 個々の http ステータス コード BLOB ステータスの取得の結果

If-Modified-Since

200 (OK)

200 (OK)

If-None-Match

200 (OK)

If-Unmodified-Since

200 (OK)

If-Match

200 (OK)

If-Modified-Since

200 (OK)

412 (Precondition Failed)

If-None-Match

304 (Not Modified)

If-Unmodified-Since

412 (Precondition Failed)

If-Match

200 (OK)

If-Modified-Since

200 (OK)

200 (OK)

If-None-Match

304 (Not Modified)

If-Unmodified-Since

200 (OK)

If-Match

200 (OK)

If-Modified-Since

304 (Not Modified)

412 (Precondition Failed)

If-None-Match

200 (OK)

If-Unmodified-Since

200 (OK)

If-Match

412 (Precondition Failed)

If-Modified-Since

304 (Not Modified)

412 (Precondition Failed)

If-None-Match

200 (OK)

If-Unmodified-Since

412 (Precondition Failed)

If-Match

412 (Precondition Failed)

If-Modified-Since

304 (Not Modified)

200 (OK)

If-None-Match

200 (OK)

If-Unmodified-Since

200 (OK)

If-Match

200 (OK)

If-Modified-Since

304 (Not Modified)

412 (Precondition Failed)

If-None-Match

304 (Not Modified)

If-Unmodified-Since

412 (Precondition Failed)

If-Match

200 (OK)

2013-08-15 より前のバージョンで BLOB サービスの読み取り操作 (Get Blob (REST API) および Get Blob Properties (REST API)) を呼び出す場合、およびバージョンに関係なく書き込み操作を呼び出す場合は、次の点に注意してください。

  • If-None-Match ヘッダーと If-Modified-Since ヘッダーが両方とも指定されている要求は、If-None-Match に指定されている条件に基づいて評価されます。

  • If-Match ヘッダーと If-Unmodified-Since ヘッダーが両方とも指定されている要求は、If-Match に指定されている条件に基づいて評価されます。

  • 前に示した 2 とおりの条件ヘッダーの組み合わせは例外として、要求には条件ヘッダーを 1 つのみ指定できます。複数の条件ヘッダーを指定すると、ステータス コード 400 (Bad Request) が返されます。

  • 応答に ETag が含まれていた場合は、要求と応答のバージョンを検証してから ETag を処理してください。たとえば、バージョン 2011-08-18 以降では、引用符に囲まれた ETag が返されますが、それより前のバージョンではそのようになっていません。どちらの形式にでも対応できるよう ETag 形式を処理してから ETag を評価するようにアプリケーションを設計してください。

  • RFC 2616 では、1 つのヘッダーに複数の ETag 値を指定できることになっていますが、BLOB サービスに対する要求に含めることができる ETag 値は 1 つだけです。複数の ETag 値を指定すると、ステータス コード 400 (Bad Request) が返されます。

条件ヘッダーをサポートしている操作を次の表に示します。

 

REST 操作

操作の種類

サポートされている条件ヘッダー

Copy Blob

読み書き

コピー先における条件:

  • If-Modified-Since

  • If-Unmodified-Since

  • If-Match

  • If-None-Match

コピー元における条件:

  • x-ms-source-if-modified-since

  • x-ms-source-if-unmodified-since

  • x-ms-source-if-match

  • x-ms-source-if-none-match

Delete Blob (REST API)

Write

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Delete Container (REST API)

Write

If-Modified-Since

If-Unmodified-Since

Get Blob (REST API)

Read

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Get Blob Metadata (REST API)

Read

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Get Blob Properties (REST API)

Read

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Get Page Ranges (REST API)

Write

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Lease Blob (REST API)

Write

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Lease Container (REST API)

Write

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Put Blob (REST API)

Write

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Put Block List (REST API)

Write

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Put Page (REST API)

Write

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Set Blob Metadata (REST API)

Write

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Set Blob Properties (REST API)

Write

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Set Container ACL (REST API)

Write

If-Modified-Since

If-Unmodified-Since

Set Container Metadata (REST API)

Write

If-Modified-Since

Snapshot Blob (REST API)

Read

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

現在、次の BLOB サービスのデータ操作では、条件ヘッダーがサポートされません。

要求に条件ヘッダーが指定されている場合に、要求の対象となっているリソースが指定の条件を満たしていないときは、BLOB サービスは HTTP 応答コードを返します。返される応答コードは、HTTP/1.1 プロトコル仕様 (RFC 2616) に準拠しています。これらのエラー応答コードは、Windows Azure の .NET ライブラリのメソッドによって StorageClientException に変換され、StatusCode プロパティに System.Net.HttpStatusCode 列挙型の値が設定されます。条件付きの操作に起因する例外を処理するサンプル コードについては、「How to Conditionally Refresh a Local Copy of a Blob」を参照してください。

読み取り操作に指定される各条件ヘッダーについて、条件が満たされなかった場合に返される応答コードを次の表に示します。読み取り操作では、GET 動詞または HEAD 動詞が使用されます。

 

条件ヘッダー 条件が満たされなかった場合の応答コード

If-Modified-Since

Not Modified (304 (Not Modified))

If-Unmodified-Since

Precondition Failed (412 (Precondition Failed))

If-Match

Precondition Failed (412 (Precondition Failed))

If-None-Match

Not Modified (304 (Not Modified))

2013-08-15 以降のバージョンで複数のヘッダーを使用した場合の結果については、上記の例を参照してください。

書き込み操作に指定される各条件ヘッダーについて、条件が満たされなかった場合に返される応答コードを次の表に示します。書き込み操作では、PUT 動詞または DELETE 動詞が使用されます。

 

条件ヘッダー 条件が満たされなかった場合の応答コード

If-Modified-Since

Precondition Failed (412 (Precondition Failed))

If-Unmodified-Since

Precondition Failed (412 (Precondition Failed))

If-Match

Precondition Failed (412 (Precondition Failed))

If-None-Match

Precondition Failed (412 (Precondition Failed))

コピー操作に指定される各条件ヘッダーについて、条件が満たされなかった場合に返される応答コードを次の表に示します。Copy Blob 操作では、PUT 動詞が使用されます。

 

条件ヘッダー 条件が満たされなかった場合の応答コード

If-Modified-Since

Precondition Failed (412 (Precondition Failed))

If-Unmodified-Since

Precondition Failed (412 (Precondition Failed))

If-Match

Precondition Failed (412 (Precondition Failed))

If-None-Match

Precondition Failed (412 (Precondition Failed))

x-ms-source-if-modified-since

Precondition Failed (412 (Precondition Failed))

x-ms-source-if-unmodified-since

Precondition Failed (412 (Precondition Failed))

x-ms-source-if-match

Precondition Failed (412 (Precondition Failed))

x-ms-source-if-none-match

Precondition Failed (412 (Precondition Failed))

関連項目

この情報は役に立ちましたか。
(残り 1500 文字)
フィードバックをいただき、ありがとうございました
表示:
© 2014 Microsoft