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 の結果は、エントリの順序は重要ではないフラットリストとして返されます。

プロパティはアクセス制御の対象となる場合があります。allproppropnameリクエストの場合、もしプリンシパルが特定のプロパティが存在するかどうかを知る権利を持っていない場合、そのプロパティは応答から静かに除外されてもかまいません(MAY)。この方法は安全かつ冪等です([RFC2616]のセクション9.1参照)。

HTTPメソッドPROPFINDは、インターネット・エンジニアリング・タスク・フォース(IETF)とワールド・ワイド・ウェブ・コンソーシアム(W3C)によって、文書RFC 4918のセクション9.1で規定されている。

PROPFINDメソッドの説明

仕掛かり品

HTTPメソッドPROPFINDの例

Request header:
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
Response header:
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