10. 分散オーサリング用 HTTP ヘッダー (HTTP Headers for Distributed Authoring)
WebDAV はいくつかの新しい HTTP ヘッダーを定義し、分散オーサリング機能をサポートします。
10.1 DAV ヘッダー (DAV Header)
DAV ヘッダーはサーバーがサポートする WebDAV 機能レベルを示します。
構文
DAV: 1, 2, 3, access-control, calendar-access
準拠レベル
- 1: 基本的な WebDAV サポート(PROPFIND、PROPPATCH、MKCOL、GET/HEAD 拡張、PUT 拡張、DELETE 拡張、OPTIONS、COPY、MOVE)
- 2: レベル 1 + LOCK と UNLOCK のサポートを含む
- 3: レベル 2 + 順序付きコレクションのサポートを含む(オプション)
使用例
OPTIONS /resource HTTP/1.1
Host: example.com
HTTP/1.1 200 OK
DAV: 1, 2
Allow: OPTIONS, GET, HEAD, POST, PUT, DELETE, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK
10.2 Depth ヘッダー (Depth Header)
Depth ヘッダーは操作がリソース階層のどの深さまで適用されるかを指定します。
構文
Depth: 0 | 1 | infinity
値の意味
- 0: ターゲットリソース自体にのみ適用
- 1: リソースとその直接メンバーに適用
- infinity: リソースとそのすべての子孫に再帰的に適用
適用メソッド
| メソッド | Depth サポート | デフォルト値 |
|---|---|---|
| PROPFIND | 0、1、infinity | infinity |
| COPY | 0、infinity | infinity |
| MOVE | infinity(他の値は無視) | infinity |
| LOCK | 0、infinity | infinity |
| DELETE | 無視(常に再帰的) | N/A |
10.3 Destination ヘッダー (Destination Header)
Destination ヘッダーは COPY または MOVE 操作の宛先 URL を指定します。
構文
Destination: absoluteURI
要件
- 必須: COPY と MOVE メソッドにはこのヘッダーが必要
- 絶対 URI: 完全な絶対 URI でなければならない
- 同一サーバー: 通常、ソースと宛先は同じサーバー上にある必要がある
10.4 If ヘッダー (If Header)
If ヘッダーは WebDAV メソッドを条件付きで実行するメカニズムを提供し、ロックトークンと ETag の提出に使用されます。
構文
If ヘッダーには 2 つの形式があります。
No-tag-list 形式:
If: (<locktoken>) ([etag])
Tagged-list 形式:
If: <resource-url> (<locktoken>)
用途
- ロックトークンの提出 — クライアントがロックを保持していることを証明
- 条件付きリクエスト — ETag に基づく条件付き実行
- 論理的な組み合わせ — AND と OR ロジックをサポート
10.5 Lock-Token ヘッダー (Lock-Token Header)
Lock-Token ヘッダーは UNLOCK メソッドで削除するロックを指定するために使用されます。
構文
Lock-Token: <uri>
使用例
UNLOCK /resource HTTP/1.1
Host: example.com
Lock-Token: <urn:uuid:a515cfa4-5da4-22e1-f5b5-00a0451e6bf7>
HTTP/1.1 204 No Content
10.6 Overwrite ヘッダー (Overwrite Header)
Overwrite ヘッダーは COPY または MOVE 操作が宛先リソースを上書きすべきかどうかを指定します。
構文
Overwrite: T | F
値
- T(True): 宛先リソースを上書き(デフォルト)
- F(False): 上書きしない。宛先が存在する場合は失敗
10.7 Timeout リクエストヘッダー (Timeout Request Header)
Timeout ヘッダーは LOCK リクエストでロックのタイムアウト時間を提案するために使用されます。
構文
Timeout: Second-<seconds> | Infinite
HTTP ヘッダーのクイックリファレンス
| ヘッダー | 使用メソッド | 必須/オプション | 説明 |
|---|---|---|---|
| DAV | OPTIONS | 応答 | サーバーがサポートする機能レベル |
| Depth | PROPFIND、COPY、LOCK | オプション | 操作の深さ |
| Destination | COPY、MOVE | 必須 | 宛先 URL |
| If | すべてのメソッド | オプション | 条件付き実行とロックトークンの提出 |
| Lock-Token | UNLOCK | 必須 | 削除するロックトークン |
| Overwrite | COPY、MOVE | オプション | 宛先を上書きするかどうか |
| Timeout | LOCK | オプション | 提案するロックタイムアウト |