depth

Depth: ヘッダー (HTTP)

[2] Depth: ヘッダーは、操作の適用対象となる資源の階層の深さを指定するものです。

仕様書

意味

[4] Depth: ヘッダーは、内部メンバーを持つことがある資源についての操作で、 操作が適用される対象の深さを指定するものです >>1

[8] このヘッダーは、定義上明示的に対応することになっているメソッドのみが対応しています >>1

[12] クライアントは、メンバーに対してどの順序で操作が適用されるかや、 原子的に実行されるかどうかについて、メソッドごとに明示的に適宜されている場合を除き、 仮定してはなりません >>1

構文

[3] 値は、 01infinity のいずれかです。大文字・小文字不区別です >>1

  1. |
    1. 0
    2. 1
    3. infinity

[5] 0 は、資源自体にのみ適用されることを示します >>1

[6] 1 は、資源とその内部メンバーのみに適用されることを示します >>1

[7] infinity は、資源とそのすべてのメンバーに適用されることを示します >>1

[10] 要求メソッドによっては対応していない値もあります >>1

[23] PROPFIND については、 WebDAV に従う資源は、 01 に対応しなければならずinfinity にも対応するべきです >>21

[27] DELETE 要求では、 infinity 以外を指定してはなりません >>26

[30] COPY 要求では、 WebDAV コレクションにおいて 0infinity を指定できます >>29

[36] MOVE 要求では、 WebDAV コレクションにおいて infinity 以外は指定してはなりません >>35

[38] LOCK 要求では、 0infinity 以外は指定してはなりません >>37

既定値

[11] 要求メソッドによっては Depth: ヘッダーが指定されなかった場合の既定値もあります >>1

[24] PROPFIND 要求 >>21LOCK 要求 >>37 では、 infinity が既定値です。

[28] DELETE >>26MOVE >>35 では、常に infinity が指定されたとみなさなければなりません

[31] COPY 要求では、 WebDAV コレクションにおいては infinity が既定値です >>29

処理

[16] 資源内部メンバーを持たない場合には、 Depth: ヘッダーは無視しなければなりません >>1

[9] メソッドにもよりますが、 Depth: ヘッダーの指定に従いできるだけの処理を行い、 失敗した場合はどれが失敗したかを記載した応答を返すことになっています >>1

[13] 例えば COPY メソッドDepth: infinity が指定された場合には、できるだけ資源を複製しようと試み、 失敗したものの一覧を 207 応答に含めます。

[34] COPY 要求においては、 WebDAV コレクションに関しては 0infinity に対応しなければなりません >>29

[25] PROPFIND 要求において Depth: infinity に対応しない場合、状態符号 403事前条件符号 propfind-finite-depth を返すべきです >>6

[39] LOCK 要求では、更新の要求の場合、 無視しなければなりません >>37

作成の場合は無視しません。

[14] 原則として Depth: ヘッダーが含まれる要求の他のヘッダー対象資源のみに適用され、 メンバーには適用してはなりません >>1

文脈

[22] PROPFIND 要求は、 Depth: ヘッダーを含まなければなりません >>21

depth 要素 (WebDAV)

[18] DAV: 名前空間depth 要素は、深さを表します >>17

[19] この要素内容は、 01infinity のいずれかの文字データです >>17大文字・小文字不区別とみられます。

  1. |
    1. 0
    2. 1
    3. infinity

[20] 値の意味は明記されていませんが、 Depth: ヘッダーの同じ値と同義でしょう。

[47] depth 要素activelock 要素子要素として必要です >>46

歴史

[33] Depth: ヘッダーに関する IANA登録簿RFC 4918 が出典に更新されています >>32

関連

[15] Depth: で指定された範囲内の資源ロックされていてそのままではメソッドの処理に成功しない場合には、 If: ヘッダーに適当なロックトークンを含めなければなりません >>1

[40] [MS-WDVSE]: Depth "noroot" Request Header Extension ( 版) <https://msdn.microsoft.com/en-us/library/cc250218.aspx>

1,noroot

The command applies to the next level of resources in the container but not to the container itself.

infinity,noroot

The command applies to all the resources in the container but not to the container itself.

The noroot extension is present if the "1,noroot" value is set or if the "infinity,noroot" value is set.<3>

[41] RFC 8144 - Use of the Prefer Header Field in Web Distributed Authoring and Versioning (WebDAV) () <https://tools.ietf.org/html/rfc8144#appendix-A>

[42] Depth Header () <https://msdn.microsoft.com/en-us/library/aa563950.aspx>

Depth = "Depth" ":" ("0" | "1" | "1,noroot" | "infinity" | "infinity,noroot")

Depth: 0 - The method is applied only to the resource.

Depth: 1 - The method is applied to the resource and to its immediate children.

Depth: 1,noroot - The method is applied only to resources immediately subordinate to the target Uniform Resource Identifier (URI) but the target resource itself is excluded. This value is only supported on the PROPFIND Method.

Depth: infinity - The method is applied to the resource and to all of its children.

Depth: infinity,noroot - The method is applied recursively to all resources subordinate to the target but the target resource itself is excluded. This value is supported on the DELETE Method, the BDELETE Method, the MOVE Method, the BMOVE Method, the COPY Method, the BCOPY Method, the PROPFIND Method, the LOCK Method, and the UNLOCK Method.

[43] RFC 8144 - Use of the Prefer Header Field in Web Distributed Authoring and Versioning (WebDAV) () <https://tools.ietf.org/html/rfc8144#section-4>

[44] Issues List for Versioning Extensions to WebDAV (RFC 3253) () <http://www.webdav.org/deltav/protocol/rfc3253-issues-list.htm>

[45] RFC 4437 - Web Distributed Authoring and Versioning (WebDAV) Redirect Reference Resources () <https://tools.ietf.org/html/rfc4437#section-8>

[48] RFC 4791 - Calendaring Extensions to WebDAV (CalDAV) () <https://tools.ietf.org/html/rfc4791#section-7.9>

[49] RFC 5842 - Binding Extensions to Web Distributed Authoring and Versioning (WebDAV) () <https://tools.ietf.org/html/rfc5842#section-7.1>