PROPFIND

HTTP Methode

Spezifikation von der HTTP Methode PROPFIND

Die PROPFIND-Methode ruft Eigenschaften ab, die für die durch die Request-URI identifizierte Ressource definiert sind, wenn die Ressource keine internen Mitglieder hat, oder für die durch die Request-URI identifizierte Ressource und möglicherweise ihre Mitgliedsressourcen, wenn die Ressource eine Sammlung ist, die interne MitgliedsURLs hat. Alle DAV-konformen Ressourcen MÜSSEN die PROPFIND-Methode und das propfind XML-Element (Abschnitt 14.20) zusammen mit allen XML-Elementen, die für die Verwendung mit diesem Element definiert sind, unterstützen.

Ein Client MUSS bei einer PROPFIND-Anfrage einen Depth-Header mit einem Wert von "0", "1" oder "unendlich" übermitteln. Server MÜSSEN "0"- und "1"-Tiefenanfragen für WebDAV-konforme Ressourcen unterstützen und SOLLTEN "unendlich"-Anfragen unterstützen. In der Praxis KANN die Unterstützung für Anfragen mit unendlicher Tiefe aufgrund der mit diesem Verhalten verbundenen Leistungs- und Sicherheitsbedenken deaktiviert werden. Server SOLLTEN eine Anfrage ohne Depth-Header so behandeln, als ob ein Depth: infinity-Header enthalten wäre.

Ein Client kann ein propfind XML-Element im Body der Anfrage-Methode übermitteln, das beschreibt, welche Informationen angefordert werden. Das ist möglich:

  • Bestimmte Eigenschaftswerte anzufordern, indem die gewünschten Eigenschaften innerhalb des prop-Elements benannt werden (die Reihenfolge der Eigenschaften in diesem Element KANN vom Server ignoriert werden),
  • Eigenschaftswerte für die in dieser Spezifikation definierten Eigenschaften (mindestens) plus tote Eigenschaften anfordern, (das include-Element kann zusammen mit allprop verwendet werden, um den Server anzuweisen, auch zusätzliche aktive Eigenschaften einzuschließen, die sonst nicht zurückgegeben worden wären),
  • Anforderung einer Liste von Namen aller Eigenschaften, die in der Ressource definiert sind, unter Verwendung des propname-Elements.

Ein Client kann sich dafür entscheiden, keinen Request Body zu übermitteln. Ein leerer PROPFIND-Anfragekörper MUSS wie eine allprop-Anfrage behandelt werden.

Beachten Sie, dass allprop nicht für alle aktiven Eigenschaften Werte zurückgibt. WebDAV-Server haben zunehmend aufwendig berechnete oder langwierige Eigenschaften (siehe [RFC3253] und [RFC3744]) und geben nicht mehr alle Eigenschaften zurück. Stattdessen können WebDAV-Clients propname-Anfragen verwenden, um herauszufinden, welche Live-Eigenschaften existieren, und benannte Eigenschaften anfordern, wenn sie Werte abrufen. Für eine Live-Eigenschaft, die an anderer Stelle definiert wurde, kann in dieser Definition angegeben werden, ob diese Live-Eigenschaft in allprop-Anfragen zurückgegeben werden soll oder nicht.

Alle Server MÜSSEN die Rückgabe einer Antwort vom Inhaltstyp text/xml oder application/xml unterstützen, die ein multistatus XML-Element enthält, das die Ergebnisse der Versuche, die verschiedenen Eigenschaften abzurufen, beschreibt.

Wenn beim Abrufen einer Eigenschaft ein Fehler auftritt, MUSS ein entsprechendes Fehlerergebnis in die Antwort aufgenommen werden. Eine Anfrage zum Abrufen des Wertes einer Eigenschaft, die nicht existiert, ist ein Fehler und MUSS mit einem response XML-Element vermerkt werden, das einen 404 (Not Found)-Statuswert enthält.

Das multistatus XML-Element für eine Sammlungsressource MUSS folglich ein response XML-Element für jede Mitglieds-URL der Sammlung enthalten, unabhängig von der angeforderten Tiefe. Es SOLLTE KEINE response Elemente für Ressourcen enthalten, die nicht WebDAV-kompatibel sind. Jedes response-Element MUSS ein href-Element enthalten, das die URL der Ressource enthält, für die die Eigenschaften im prop-XML-Element definiert sind. Die Ergebnisse einer PROPFIND-Suche nach einer Sammelressource werden als flache Liste zurückgegeben, deren Reihenfolge der Einträge nicht von Bedeutung ist. Beachten Sie, dass eine Ressource nur einen Wert für eine Eigenschaft mit einem bestimmten Namen haben kann, so dass die Eigenschaft nur einmal in PROPFIND-Antworten auftauchen kann.

Eigenschaften können einer Zugriffskontrolle unterliegen. Im Fall von allprop und propname Anfragen, wenn ein Principal nicht das Recht hat zu wissen, ob eine bestimmte Eigenschaft existiert, dann KANN die Eigenschaft stillschweigend von der Antwort ausgeschlossen werden.

Einige PROPFIND Ergebnisse KÖNNEN zwischengespeichert werden, mit Vorsicht, da es keinen Cache-Validierungsmechanismus für die meisten Eigenschaften gibt. Diese Methode ist sowohl sicher als auch idempotent (siehe Abschnitt 9.1 von [RFC2616]).

Die HTTP-Methode PROPFIND ist in Abschnitt 9.1 des Dokuments RFC 4918 von der Internet Engineering Task Force (IETF) und dem World Wide Web Consortium (W3C) spezifiziert worden.

Beschreibung der Methode PROPFIND

in Arbeit befindliche Maßnahmen

Beispiel für die HTTP Methode 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