11. Status Code Extensions to HTTP/1.1 (HTTP/1.1 へのステータスコード拡張)
11. Status Code Extensions to HTTP/1.1 (HTTP/1.1 へのステータスコード拡張)
以下のステータスコードが HTTP/1.1 [RFC2616] で定義されたものに追加されます。
11.1 207 Multi-Status (マルチステータス)
207 (Multi-Status, マルチステータス) ステータスコードは, 複数の独立した操作のステータスを提供します (詳細については第 13 節を参照)。
11.2 422 Unprocessable Entity (処理不可能なエンティティ)
422 (Unprocessable Entity, 処理不可能なエンティティ) ステータスコードは, サーバーがリクエストエンティティのコンテンツタイプを理解している (したがって 415(Unsupported Media Type) ステータスコードは不適切) こと, およびリクエストエンティティの構文が正しい (したがって 400 (Bad Request) ステータスコードは不適切) ことを意味しますが, 含まれている指示を処理できませんでした。たとえば, XML リクエストボディに整形式 (つまり構文的に正しい) だが意味的に誤った XML 指示が含まれている場合に, このエラー状態が発生する可能性があります。
11.3 423 Locked (ロック済み)
423 (Locked, ロック済み) ステータスコードは, メソッドのソースまたはデスティネーションリソースがロックされていることを意味します。このレスポンスは, 'lock-token-submitted' や 'no-conflicting-lock' などの適切な前提条件または事後条件コードを含むべきです。
11.4 424 Failed Dependency (失敗した依存関係)
424 (Failed Dependency, 失敗した依存関係) ステータスコードは, 要求されたアクションが別のアクションに依存しており, そのアクションが失敗したために, リソースに対してメソッドを実行できなかったことを意味します。たとえば, PROPPATCH メソッドのコマンドが失敗した場合, 少なくとも残りのコマンドも 424 (Failed Dependency) で失敗します。
11.5 507 Insufficient Storage (ストレージ不足)
507 (Insufficient Storage, ストレージ不足) ステータスコードは, サーバーがリクエストを正常に完了するために必要な表現を格納できないため, リソースに対してメソッドを実行できなかったことを意味します。この状態は一時的なものと見なされます。このステータスコードを受け取ったリクエストがユーザーアクションの結果である場合, 別のユーザーアクションによって要求されるまで, リクエストを繰り返してはなりません。
12. Use of HTTP Status Codes (HTTP ステータスコードの使用)
これらの HTTP コードは再定義されていませんが, WebDAV メソッドと要件によってその使用がある程度拡張されています。一般に, 多くの HTTP ステータスコードは, このドキュメントで説明されているケースだけでなく, 任意のリクエストへの応答として使用できます。また, WebDAV サーバーが 300 レベルのリダイレクトレスポンスを使用することが知られていることにも注意してください (初期の相互運用性テストでは, クライアントがこれらのレスポンスを見る準備ができていないことがわかりました)。サーバーがリクエストに応答して新しいリソースを作成した場合, 300 レベルのレスポンスを使用してはなりません。
12.1 412 Precondition Failed (前提条件の失敗)
任意のリクエストには, HTTP で定義された条件ヘッダー (If-Match, If-Modified-Since など) または本仕様で定義された "If" または "Overwrite" 条件ヘッダーを含めることができます。サーバーが条件ヘッダーを評価し, その条件が成立しない場合, このエラーコードを返さなければなりません。一方, クライアントがリクエストに条件ヘッダーを含めなかった場合, サーバーはこのステータスコードを使用してはなりません。
12.2 414 Request-URI Too Long (リクエスト URI が長すぎる)
このステータスコードは, HTTP 1.1 では Request-URIs にのみ使用され, 他の場所の URI には使用されません。
13. Multi-Status Response (マルチステータスレスポンス)
Multi-Status response (マルチステータスレスポンス) は, 複数のステータスコードが適切である可能性がある状況で, 複数のリソースに関する情報を伝達します。デフォルトの Multi-Status レスポンスボディは, 'multistatus' ルート要素を持つ text/xml または application/xml HTTP エンティティです。さらなる要素には, メソッド呼び出し中に生成された 200, 300, 400, および 500 シリーズのステータスコードが含まれます。100 シリーズのステータスコードは 'response' XML 要素に記録すべきではありません。
'207' が全体のレスポンスステータスコードとして使用されますが, 受信者はメソッド実行の成功または失敗に関する詳細情報について multistatus レスポンスボディの内容を参照する必要があります。レスポンスは成功, 部分的成功, および失敗の状況でも使用できます。
'multistatus' ルート要素は, 任意の順序で 0 個以上の 'response' 要素を保持し, それぞれに個々のリソースに関する情報が含まれます。各 'response' 要素は, リソースを識別するための 'href' 要素を持たなければなりません。
Multi-Status レスポンスは, ステータスを表すために 2 つの異なる形式のうちの 1 つを使用します:
-
'response' 要素の子要素としての 'status' 要素は, 識別されたリソース全体のメッセージ実行のステータスを示します (たとえば, 第 9.6.2 節を参照)。一部のメソッド定義は, クライアントがレスポンスで見る準備をすべき特定のステータスコードに関する情報を提供します。ただし, クライアントは [RFC2616] の第 10 節で定義された一般的なルールを使用して, 他のステータスコードを処理できなければなりません。
-
PROPFIND と PROPPATCH については, 'status' の代わりに 'propstat' 要素を使用してフォーマットが拡張されており, リソースの個々のプロパティに関する情報を提供します。このフォーマットは PROPFIND と PROPPATCH に固有であり, 第 9.1 節と 9.2 節で詳しく説明されています。
13.1 Response Headers (レスポンスヘッダー)
HTTP は, Request-URI でアドレス指定されたリソースの優先 URL を示すために Location ヘッダーを定義します (たとえば, 成功した PUT リクエストへの応答またはリダイレクトレスポンスで)。ただし, Multi-Status のように, レスポンスのボディに URL がある場合, このヘッダーの使用は曖昧さを生み出します。したがって, Multi-Status レスポンスでの Location ヘッダーの使用は意図的に未定義です。
13.2 Handling Redirected Child Resources (リダイレクトされた子リソースの処理)
HTTP 1.1 で定義されたリダイレクトレスポンス (300-303, 305, および 307) は通常, Request-URI からリダイレクトされた単一のリソースの新しい URI を示すために Location ヘッダーを取ります。Multi-Status レスポンスには多くのリソースアドレスが含まれますが, [RFC2518] の元の定義では, サーバーがリダイレクトされたリソースの新しい URI を提供する場所がありませんでした。本仕様では, この情報のための 'location' 要素を定義しています (第 14.9 節を参照)。サーバーは Multi-Status のリダイレクトレスポンスでこの新しい要素を使用しなければなりません。
Multi-Status でリダイレクトされたリソースに遭遇したクライアントは, 新しい URI を持つ 'location' 要素が存在することに依存してはなりません。要素が存在しない場合, クライアントは個々のリダイレクトされたリソースにリクエストを再発行できます。なぜなら, そのリクエストへのレスポンスは新しい URI を含む Location ヘッダーでリダイレクトできるためです。
13.3 Internal Status Codes (内部ステータスコード)
第 9.2.1, 9.1.2, 9.6.1, 9.8.3, および 9.9.2 節では, Multi-Status レスポンスで使用されるさまざまなステータスコードを定義しています。本仕様では, これらのレスポンスに表示される可能性のある他のステータスコードの意味を定義していません。