Appendix D. Lock-null Resources (ロックnullリソース)
附録 D. Lock-null Resources (ロックnullリソース)
マップされていない URL をロックするための元の WebDAV モデルは、"ロックnullリソース" を作成しました。このモデルは過度に複雑であり、いくつかの相互運用性と実装の問題が発見されました。マップされていない URL をロックするための新しい WebDAV モデル (セクション 7.3 を参照) は、"ロックされた空のリソース" を作成します。ロックnullリソースは非推奨です。クライアントはどちらのモデルも処理できなければならない (MUST) ため、このセクションでは元のモデルについて簡単に説明します。
元の "ロックnullリソース" モデルでは、実装が推奨されなくなりました:
-
ロックnullリソースは時々 "Not Found" として表示されます。サーバーは、PUT、MKCOL、OPTIONS、PROPFIND、LOCK、UNLOCK を除くすべてのメソッドに対して 404 または 405 で応答します。
-
ただし、ロックnullリソースは親コレクションのメンバーとして表示されます。
-
サーバーは、ロックが通常のリソースに変換される前に消失した場合、ロックnullリソースを完全に削除します (その URI はマップされなくなります)。ロックは、期限切れまたはロック解除されたときだけでなく、リソースの名前が変更または移動された場合、または親コレクションの名前が変更または移動された場合にも削除されることを思い出してください。
-
URL への PUT リクエストが成功した場合、サーバーはロックnullリソースを通常のリソースに変換します。
-
URL への MKCOL リクエストが成功した場合、サーバーはロックnullリソースをコレクションに変換します (ただし、相互運用性の経験により、すべてのサーバーがこの要件に従っているわけではないことが示されました)。
-
DAV:lockdiscovery および DAV:supportedlock プロパティのプロパティ値は定義されていましたが、DAV:getcontenttype のような他のプロパティには必ずしも定義されていませんでした。
クライアントは、マップされていない URL への LOCK 後に PUT のみを試行し、MKCOL または GET を試行しないことで、古いモデルの "ロックnullリソース" をサポートするサーバーと推奨モデルの "ロックされた空のリソース" の両方と簡単に相互運用できます。
D.1. Guidance for Clients Using LOCK to Create Resources (LOCK を使用してリソースを作成するクライアントのガイダンス)
この仕様に実装された WebDAV クライアントは、ロックnullリソースを作成するサーバー (この仕様の前に [RFC2518] を使用して実装されたもの) と、ロックされた空のリソースを作成するサーバーの両方を見つける可能性があります。LOCK リクエストへの応答は、どの種類のリソースが作成されたかを示しません。クライアントがいずれかのタイプを処理するのに役立ついくつかのテクニックがあります。
-
クライアントがロックnullまたは空のロックされたリソースを誤って作成することを避けたい場合、サーバーが新しいリソースを作成するのを防ぐために、"If-Match: *" ヘッダーを LOCK リクエストに含めることができます。
-
LOCK リクエストがリソースを作成し、クライアントがその後 COPY または MOVE リクエストを使用してそのリソースを上書きしたい場合、クライアントは "Overwrite: T" ヘッダーを含める必要があります。
-
LOCK リクエストがリソースを作成し、クライアントがそのリソースを削除することにした場合、DELETE リクエストはロックnullリソースで失敗するはずで、代わりに UNLOCK を使用する必要があります。しかし、ロックされた空のリソースの場合、UNLOCK はリソースを消滅させません。したがって、クライアントは両方のリクエストを試行し、2 つのリクエストのいずれかでエラーを無視する必要がある場合があります。