PROPFIND

HTTP-methode

Specificatie van de HTTP-methode PROPFIND

De PROPFIND methode haalt eigenschappen op die zijn gedefinieerd op de bron die wordt geïdentificeerd door de Request-URI, als de bron geen interne leden heeft, of op de bron die wordt geïdentificeerd door de Request-URI en mogelijk zijn lidbronnen, als de bron een verzameling is die interne lid-URL's heeft. Alle DAV-conforme bronnen MOETEN de PROPFIND-methode en het propfind XML-element (Sectie 14.20) ondersteunen, samen met alle XML-elementen die zijn gedefinieerd voor gebruik met dat element.

Een client MOET een Depth-header met de waarde "0", "1" of "infinity" meesturen met een PROPFIND-verzoek. Servers MOETEN "0" en "1" diepteverzoeken ondersteunen op WebDAV-compatibele bronnen en ZOU "oneindig" verzoeken moeten ondersteunen. In de praktijk MOET ondersteuning voor oneindig diepe verzoeken worden uitgeschakeld vanwege de prestatie- en beveiligingsproblemen die met dit gedrag gepaard gaan. Servers ZOUDEN een verzoek zonder een Depth-header moeten behandelen alsof een Depth: infinity-header is opgenomen.

Een client kan een propfind XML-element opnemen in de body van de verzoekmethode waarin wordt beschreven welke informatie wordt opgevraagd. Het is mogelijk om:

  • bepaalde waarden van eigenschappen op te vragen door de gewenste eigenschappen te benoemen in het prop-element (de volgorde van de eigenschappen in dit element MAG door de server worden genegeerd),
  • waarden van eigenschappen op te vragen voor de eigenschappen die in deze specificatie zijn gedefinieerd (minimaal) plus dode eigenschappen, met behulp van het allprop-element (het include-element kan worden gebruikt in combinatie met allprop om de server opdracht te geven ook aanvullende live properties op te nemen die anders mogelijk niet waren geretourneerd),
  • Vraag een lijst op met namen van alle eigenschappen die op de bron zijn gedefinieerd, met behulp van het propname-element.

Een client kan ervoor kiezen geen verzoekinstantie in te dienen. Een lege PROPFIND-verzoekromp MOET worden behandeld alsof het een allprop-verzoek was.

Let op dat allprop niet voor alle live eigenschappen waarden retourneert. WebDAV-servers hebben steeds vaker dure of lange eigenschappen (zie [RFC3253] en [RFC3744]) en retourneren niet alle eigenschappen. In plaats daarvan kunnen WebDAV-cliënten propname verzoeken gebruiken om te ontdekken welke live eigenschappen er bestaan, en genoemde eigenschappen opvragen bij het ophalen van waarden. Voor een live eigenschap die elders is gedefinieerd, kan in die definitie worden opgegeven of die live eigenschap al dan niet moet worden geretourneerd in allprop-verzoeken.

Alle servers MOETEN het terugsturen van een antwoord van het inhoudstype text/xml of application/xml ondersteunen dat een multistatus XML-element bevat dat de resultaten beschrijft van de pogingen om de verschillende eigenschappen op te halen.

Als er een fout optreedt bij het ophalen van een eigenschap, MOET een correct foutresultaat worden opgenomen in het antwoord. Een verzoek om de waarde van een eigenschap op te halen die niet bestaat, is een fout en MOET worden aangegeven met een response XML-element dat een 404-statuswaarde (Not Found) bevat.

Daarna MOET het multistatus XML-element voor een collectiebron een response XML-element bevatten voor elke lid-URL van de collectie, tot welke diepte dan ook. Het ZOU GEEN response elementen moeten bevatten voor bronnen die niet WebDAV-compatibel zijn. Elk response element MOET een href element bevatten dat de URL bevat van de bron waarop de eigenschappen in het prop XML element zijn gedefinieerd. Resultaten voor een PROPFIND op een verzamelbron worden geretourneerd als een vlakke lijst waarvan de volgorde van de items niet significant is. Merk op dat een bron slechts één waarde kan hebben voor een eigenschap met een gegeven naam, dus de eigenschap kan slechts één keer voorkomen in PROPFIND-responsen.

Eigenschappen kunnen onderhevig zijn aan toegangscontrole. In het geval van allprop- en propname-verzoeken geldt dat als een principal niet het recht heeft om te weten of een bepaalde eigenschap bestaat, de eigenschap stilzwijgend van het antwoord mag worden uitgesloten.

Sommige PROPFIND-resultaten mogen in de cache worden opgeslagen, maar dit moet voorzichtig gebeuren, omdat er voor de meeste eigenschappen geen validatiemechanisme voor de cache is. Deze methode is zowel veilig als idempotent (zie Sectie 9.1 van [RFC2616]).

HTTP-methode PROPFIND is gespecificeerd in sectie 9.1 van document RFC 4918 door de Internet Engineering Task Force (IETF) en het World Wide Web Consortium (W3C).

Beschrijving van de PROPFIND-methode

werk in uitvoering

Voorbeeld voor de 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