propfind

要求メソッド PROPFIND (HTTP)

[47] PROPFIND は、資源特性を取得する要求メソッドです。

仕様書

意味

[7] PROPFIND は、対象資源特性を取得するものです。 対象資源コレクションである場合には、それに加えてコレクションメンバー特性も取得することができます。 >>6

[25] PROPFIND安全なメソッド冪等メソッドです >>6

構文

[9] PROPFIND 要求には、 Depth: ヘッダーの値 01infinity のいずれかを指定しなければなりません >>6

[11] 要求payload body は、根要素 propfind を使った XML文書とすることができます >>6

[16] 要求payload body は、空にもできます >>6

その場合、 allprop 要素が指定されたものとみなされます >>6

[36] DAV: 名前空間propfind 要素は、返すべき特性を指定するものです >>35

[37] 内容要素内容で、 propname 要素allprop 要素prop 要素のいずれかを含められます。 allprop 要素を含める時は、 include 要素も含められます。 >>35 順序は意味を持ちません >>42

  1. |
    1. propname
    2. =
      1. allprop
      2. ?
        1. include
    3. =
      1. ?
        1. include
      2. allprop
    4. prop

[13] prop 要素によって特性の名前を列挙することで、 指定した特性の値を要求できます >>6

[38] この prop 要素特性の値を含んではなりません >>35

[14] DAV: 名前空間allprop 要素は、 当該資源に存在するすべての死特性RFC 4918 で定義されるすべての生特性の名前と値を返すよう指定するものです >>6, >>28。 この要素は、空要素です >>28

[29] DAV: 名前空間include 要素は、更に生特性を加えて要求するものです >>6

[32] include 要素子要素は、 応答に含めるべき特性の名前を表すもの (特性名要素) でなければなりません >>30。 順序は意味を持ちません >>42

[34] 死特性を指定することは禁止されていないようですが、 allprop 要素死特性がすべて含まれるので、 冗長です。

[31] 内容テキストを含めてはなりません >>30

[33] 要素間空白が認められるかは不明です。

[15] DAV: 名前空間propname 要素は、当該資源で定義されている特性の名前の一覧のみを要求するものです >>6, >>39特性の値は要求しません。この要素空要素です >>39

文脈

[1] HTCPCP では、対象が珈琲一杯なら、 その沸かした珈琲に関するメタ・データPROPFIND method を使って得られます >>3

処理

[8] WebDAV に従う資源は、 PROPFIND メソッドpropfind 要素およびその中で使われる各要素に対応しなければなりません >>6

[10] WebDAV に従う資源は、 Depth: ヘッダーの値として 10 に対応しなければならずinfinity にも対応するべきですDepth: ヘッダーが無い場合は infinity とみなすべきです>>6

[26] しかし実際上は性能や保安上の理由で infinity への対応を無効としても構いません >>6。その場合 403 応答事前条件符号 propfind-finite-depth を指定するべきです >>6, >>40

[41] propfind-finite-depth 要素内容です >>40

[5] 複数のパスセグメントから単一の資源への写像が存在する場合、 そのうちの1つのパスセグメントだけを一貫して選んで返さなければなりません >>4

[12] は、 prop 要素特性が指定された順序を無視して構いません >>6

[17] は、空の payload body が指定された場合は allprop 要素が指定されたとみなさなければなりません >>6

[18] allprop はその名前に反してすべての特性を返させるものではありません。 これは、特性の中には値の計算が大変なものもあるからです >>6

[19] は、指定された特性を取得しようとした結果の multistatus 要素を含む text/xml または application/xml応答を返せなければなりません >>6

[21] コレクションに対する要求の場合、multistatus 要素は、 コレクションのうち Depth: で指定された範囲のメンバーURL それぞれについての response 要素を含まなければなりません >>6WebDAV に適合しない資源についての response 要素を含むべきではありません >>6。 順序は意味を持ちません >>6

[22] response 要素は、資源URL を含む href 要素を含めなければなりません >>6

[23] 特性アクセス制御の対象となっているかもしれませんが、 allproppropname要求の場合には、 特性の存在を知る権限がない特性については黙って除外して構いません >>6

[20] 特性の取得時にエラーが発生した場合は、その旨を応答に含めなければなりません>>6

[27]特性propstat 要素に含めますが、 propstat 要素は各特性についての status 要素を含みます。クライアントはその値として任意の 2xx3xx4xx5xx状態符号を扱えるように準備するべきですが、 200401403404 がよく使われます。 >>6

[52] 特性が存在することや、値を正しく取得できたことを 200 によって示すことができます >>6

[50] 特性が適切な認証のもとでしか表示できないときは、 401 を使うことができます >>6

[51] しかし 207 内に challenge を記述する方法は用意されていないようです。

[49] 特性認証に関わらず表示できない時には、 403 を使うことができます >>6

[48] 指定された特性が存在しなかった場合は、 状態符号 404 を含めなければなりません>>6

[44] 要求XML文書要素の構造が仕様通りでなかった場合の動作は明確に規定されているわけではありませんが、 仕様書の例示によれば、 allproppropname の両方が指定されている時は、 400 応答を返さなければなりません (must) >>43

[46] 要求XML が怪しい時は 400 を返す >>45 という規定に基いていると思われますが、 422 ではなく 400 を返すべき根拠はよくわかりません。

[24] PROPFIND メソッドの結果はキャッシュ可能なこともありますが、 ほとんどの特性検証の仕組みがありませんから、注意する必要があります >>6

歴史

[54] RFC 3253 - Versioning Extensions to WebDAV (Web Distributed Authoring and Versioning) () https://tools.ietf.org/html/rfc3253#section-3.11

[55] RFC 3253 - Versioning Extensions to WebDAV (Web Distributed Authoring and Versioning) () https://tools.ietf.org/html/rfc3253#section-8.6

[56] RFC 3648 - Web Distributed Authoring and Versioning (WebDAV) Ordered Collections Protocol () https://tools.ietf.org/html/rfc3648#section-8

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

[63] RFC 4316: Datatypes for Web Distributed Authoring and Versioning (WebDAV) Properties, https://www.rfc-editor.org/rfc/rfc4316.html#section-5

[58] RFC 4331 - Quota and Size Properties for Distributed Authoring and Versioning (DAV) Collections () https://tools.ietf.org/html/rfc4331#section-2

[59] RFC 4437 - Web Distributed Authoring and Versioning (WebDAV) Redirect Reference Resources () https://tools.ietf.org/html/rfc4437#section-13

[60] RFC 5323 - Web Distributed Authoring and Versioning (WebDAV) SEARCH () https://tools.ietf.org/html/rfc5323#section-2.3.2

[61] RFC 5323 - Web Distributed Authoring and Versioning (WebDAV) SEARCH () https://tools.ietf.org/html/rfc5323#section-5.5.3

[62] RFC 5842 - Binding Extensions to Web Distributed Authoring and Versioning (WebDAV) () https://tools.ietf.org/html/rfc5842#section-2.6

[53] RFC 8144 - Use of the Prefer Header Field in Web Distributed Authoring and Versioning (WebDAV) () https://tools.ietf.org/html/rfc8144#section-2.1