メインコンテンツまでスキップ

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 サポートデフォルト値
PROPFIND0、1、infinityinfinity
COPY0、infinityinfinity
MOVEinfinity(他の値は無視)infinity
LOCK0、infinityinfinity
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>)

用途

  1. ロックトークンの提出 — クライアントがロックを保持していることを証明
  2. 条件付きリクエスト — ETag に基づく条件付き実行
  3. 論理的な組み合わせ — 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 ヘッダーのクイックリファレンス

ヘッダー使用メソッド必須/オプション説明
DAVOPTIONS応答サーバーがサポートする機能レベル
DepthPROPFIND、COPY、LOCKオプション操作の深さ
DestinationCOPY、MOVE必須宛先 URL
Ifすべてのメソッドオプション条件付き実行とロックトークンの提出
Lock-TokenUNLOCK必須削除するロックトークン
OverwriteCOPY、MOVEオプション宛先を上書きするかどうか
TimeoutLOCKオプション提案するロックタイムアウト