PROPFIND
HTTPメソッド
HTTPメソッドPROPFINDの仕様
PROPFINDメソッドは、リソースが内部メンバーを持たない場合はRequest-URIで特定されるリソース、リソースが内部メンバーURLを持つコレクションである場合はRequest-URIで特定されるリソースと潜在的にそのメンバーリソースに定義されるプロパティを検索します。すべての DAV 準拠リソースは PROPFIND メソッドと propfind
XML 要素 (セクション 14.20) を、その要素と共に使用するために定義されたすべての XML 要素と共にサポートしなければなりません (MUST)。サーバーはWebDAVに準拠したリソース上で "0 "と "1 "のDepthリクエストをサポートしなければならず(MUST)、"infinity "リクエストをサポートすべきです(SHOULD)。実際には、無限の深さのリクエストのサポートは、この動作に関連するパフォーマンスとセキュリティの懸念のために、無効にしてもかまいません(MAY)。サーバーは Depth ヘッダーのないリクエストを、Depth: infinity
ヘッダーが含まれているかのように扱うべきです(SHOULD)。
クライアントはリクエストメソッドのボディに、どのような情報がリクエストされているかを記述する propfind
XML 要素を提出することができます。それは可能です:
prop
要素内で希望するプロパティの名前を指定することで、特定のプロパティ値を要求する(ここでのプロパティの順序はサーバーによって無視されてもかまいません)
- この仕様で定義されているプロパティ(最低限)とデッドプロパティのプロパティ値を要求する、(
include
要素は、allprop
と一緒に使用して、そうでなければ返されなかったかもしれない追加のライブプロパティも含めるようにサーバーに指示することができます) propname
要素を使用して、リソース上で定義されたすべてのプロパティの名前のリストを要求します。
クライアントはリクエストボディを提出しないこともできます。空の PROPFIND リクエストボディは、allprop
リクエストであるかのように扱われなければなりません(MUST)。
allprop
は、すべてのライブプロパティの値を返すわけではないことに注意してください。WebDAV サーバーは、高価に計算されたプロパティや長いプロパティを持つことが増えており ([RFC3253] や [RFC3744] を参照)、すでにすべてのプロパティを返すわけではありません。その代わりに、WebDAVクライアントは、propname
リクエストを使って、どのようなライブプロパティが存在するかを発見し、値を取得するときに名前付きプロパティをリクエストすることができます。他の場所で定義されたライブプロパティに対して、その定義は、そのライブプロパティが allprop
リクエストで返されるかどうかを指定することができます。
すべてのサーバーは、様々なプロパティを取得しようとした結果を記述する multistatus
XML 要素を含む text/xml
または application/xml
コンテントタイプのレスポンスを返すことをサポートしなければなりません (MUST)。
プロパティの取得にエラーがある場合は、適切なエラー結果をレスポンスに含めなければなりません (MUST)。存在しないプロパティの値を取得するリクエストはエラーであり、404 (Not Found) ステータス値を含む response
XML 要素で通知されなければなりません (MUST)。
その結果、コレクションリソースの multistatus
XML 要素は、リクエストされた深さが何であれ、コレクションの各メンバー URL のための response
XML 要素を含まなければなりません (MUST)。WebDAV 準拠でないリソースに対する response
要素を含むべきではない (SHOULD NOT)。各 response
要素は、prop
XML 要素のプロパティが定義されているリソースの URL を含む href
要素を含まなければなりません (MUST)。コレクションリソースに対する PROPFIND の結果は、エントリの順序は重要ではないフラットリストとして返されます。
プロパティはアクセス制御の対象となる場合があります。allprop
とpropname
リクエストの場合、もしプリンシパルが特定のプロパティが存在するかどうかを知る権利を持っていない場合、そのプロパティは応答から静かに除外されてもかまいません(MAY)。この方法は安全かつ冪等です([RFC2616]のセクション9.1参照)。
PROPFINDメソッドの説明
HTTPメソッドPROPFINDの例
PROPFIND /data HTTP/1.1
Host: api.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/58.0.3029.110 Safari/537
Depth: 1
Content-Type: text/xml; charset="utf-8"
Accept-Language: de-DE,de;q=0.5
Connection: keep-alive
HTTP/1.1 207 Multi-Status
Content-Type: text/xml; charset="utf-8"
Content-Length: 453
Date: Mon, 31 July 2023 14:58:12 GMT
Server: Apache/2.4.7 (Ubuntu)
Cache-Control: no-cache