LOCK

要求メソッド LOCK (HTTP)

[12] LOCK は、ロックの作成を求める要求メソッドです。

仕様書

意味

[41] LOCK メソッドは、ロックを取得したり、 更新したりするものです >>40

[42] 安全なメソッドでも冪等なメソッドでもありません >>40

[5] 書き込みロックの適用対象となります >>3

構文

[46] 作成の要求payload bodyXML でなければなりません >>40lockinfo 要素根要素とする文書が想定されているようです。

[51] 更新の要求payload body を持ってはなりません >>40, >>35

[52] 更新の要求If: ヘッダーロックトークンを1つだけ指定しなければなりません >>40, >>35

[48] 通常の要求も更新の要求も、 Timeout: ヘッダーを指定しても構いません >>40, >>75

[58] Depth: 0 または Depth: infinity を指定することができますが、それ以外を使ってはなりません >>40

[78] DAV: 名前空間lockinfo 要素は、作成したいロックの種類を指定します >>77

[79] lockinfo 要素内容要素内容で、 lockscope 要素locktype 要素owner 要素を指定します >>77。 順序は意味を持ちません >>83。 ただし owner 要素は省略できます >>77

文脈

[36] クライアントは同じ書き込みロックを複数回要求してはなりません >>35

[37] ロック更新 (refresh) する場合には、 当該ロックの範囲内にある資源URLLOCK 要求を送信します >>40

処理

[85] WebDAV 適合クラス 2 に対応する資源は、 LOCK メソッドに対応しなければなりません >>84

[43] LOCK メソッドに対応する資源は、 最低でも WebDAVXML 形式の要求応答に対応しなければなりません >>40。成功した場合には prop 要素根要素とする XML文書応答とすることが想定されているようです。

[45] 対象資源が既に衝突するロックの対象となっていなければ、 対象URLロック根とするロックを作成します >>40, >>11

[38] 本体が空の LOCK 要求を受信したら、 新しいロックを作ってはなりません。その場合は少なくても既存のロックをリセットして「更新 (refresh) 」しなければなりません>>35

[73] If: が指定された場合で対象資源がその範囲内にない場合 (ロックの範囲外である場合、既に破棄された場合、不正なロックトークンの場合など) には、 412 応答を返すことができます。 応答には事前条件符号 lock-token-matches-request-uri を指定できます。 >>40

[50] 要求Timeout: ヘッダーが含まれていれば、 その値を元に新しいタイムアウトを決めることができます >>40, >>75

[39] クライアントLOCK 要求による更新にエラーが返された時、 ロックが更新されたと仮定してはなりません >>35

[10] ある資源URL に対する LOCK 要求で新しいロックが作られるなら、その資源は直接ロックされます。 >>6

[59] LOCK メソッドに対応する場合は、 Depth: ヘッダーにも対応しなければなりません >>40WebDAV コレクションに対する LOCK 要求では、 Depth: ヘッダーの値により適用範囲を決定します。 Depth: ヘッダーが指定されなかった場合には、 Depth: infinity が指定されたとみなさなければなりません >>40

[60] Depth: 0対象資源のみをロックすることを意味します >>40Depth: infinity の場合には、 対象資源とそのメンバーを (再帰的にすべて) ロックします >>40。 深さ無限のロックによりロックされているコレクションは、 そのメンバーである資源すべてが間接的にロックされます >>6

[62] 階層の一部のみをロックすることはできず、 ロックは全体として成功するか失敗するかのいずれかのみです >>40

[54] 更新の要求の場合には、 Depth: ヘッダーを無視しなければなりません >>40

[8] ロックされているコレクションについて新しい資源メンバーとするとき、 その資源コレクションロックによって間接的にロックしなければなりません。 その資源は既に衝突するロックを有していてはなりません>>6, >>33

[9] 排他的ロックは、同じ資源の直接または間接のいかなる種類のロックとも衝突します。 は、ある資源において衝突するロックを作ってはなりません>>6

429 も参照。

[72] 対象資源が衝突によりロックできない場合には、 423 応答を返すことができます >>40

[55] 更新の要求の場合には、ロックを更新しても他のロックは影響を受けませんし、 他のロックによって更新が妨げられることもありません >>40

[23] ロックを作成した principal は、そのロックロック作成者となります。 ロックを作成できる principal を制限しても構いません >>6は、要求owner 要素で指定された情報を保持しなければなりません >>40

[49] 応答には、 prop 要素を含め、そこに DAV:lockdiscovery 特性として作成したロックの情報を含めなければなりません >>40。 更に他のロックの情報も含めて構いません >>40

  1. prop
  1. DAV:lockdiscovery

[19] ロックに成功したら、 (再帰的にロックした場合でも) ロックトークンを1つだけ返さなければなりません >>40応答Lock-Token: ヘッダーにはロックトークンを指定しなければなりません >>40, >>74ロックトークン応答本体でもクライアントに通知されます。

[56] 更新の要求に対する応答では、 Lock-Token: ヘッダーは返しません >>40

[57] 更新の要求に対する応答DAV:lockdiscovery 特性には新しいロックトークンの値を含めなければなりません >>40

[81] 応答には lockroot 要素を含めるべきです >>80

[24] ロックを作成すると、ロックタイムアウトの値を決めて計測を開始します。

[70] 既存の資源ロックした場合は、 DAV:lockdiscovery 特性を含む 200 応答を返すことができます >>40

[14] 写像がない URLロックした場合、空の資源 (ロックされた空の資源) を新たに作らなければなりません >>40, >>6, >>7

[31] は、 RFC 2518 との互換性のため、空の資源でなく LNRs (Lock-Null Resources) を実装しても構いません >>7

[71] ただしいくつかの中間のコレクションが存在しない場合は、これを自動的に作ってはなりません409 応答を返すことができます。 >>40

[32] クライアントは、 LNRlocked empty resource のどちらをが実装していても、写像のない URLロックしたら直ちに PUT することや、 LNR 特有の特性に依存しないことで、 相互運用できます >>7
[30] クライアント応答の後すぐに PUTPROPPATCHロックした資源を更新することが期待されています >>7

[29] 空の資源を作成した場合の応答は、 201 でなければなりません >>73xx を返してはなりません >>76応答には DAV:lockdiscovery 特性を含める必要があります >>7

[63] 一部の資源についてロックできなかった場合は、 ロックはすべて作成できなかったこととなりますが、 207 応答を返して、ロックを作成できない原因となった資源最低1つの response 要素を含めなければなりません。 その場合には失敗を表す適切な状態符号を使います。 >>40 書き込みロック要求された場合で、 新しいロック衝突する形でロックされている資源メンバーURLコレクションに含まれる場合には、 423 応答によりエラーを返さなければなりません >>33。 その他 403 など適切な状態符号を使うこともできます >>40。 原因が対象資源以外の場合には、対象資源についての response 要素も含めて、その状態符号424 とするべきです >>40

[34] 状態符号423 の場合には事前条件符号 no-conflicting-lock >>82 を含めるべきです>>33, >>40

[44] 応答は、キャッシュ不可能です >>40

関連

[4] WebDAV に従う資源は、 LOCK メソッドに対応する場合、 DAV:supportedlock 特性 >>1DAV:lockdiscovery 特性 >>2 に対応しなければなりません

[13] RFC 3744 - Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol () <https://tools.ietf.org/html/rfc3744#section-7.5>