PROPFIND
HTTP-metode
Specifikation af HTTP-metoden PROPFIND
Metoden PROPFIND henter egenskaber, der er defineret på den ressource, der er identificeret af Request-URI, hvis ressourcen ikke har nogen interne medlemmer, eller på den ressource, der er identificeret af Request-URI og potentielt dens medlemsressourcer, hvis ressourcen er en samling, der har interne medlems-URL'er. Alle DAV-kompatible ressourcer SKAL understøtte PROPFIND-metoden og XML-elementet propfind
(afsnit 14.20) sammen med alle XML-elementer, der er defineret til brug med dette element.
En klient SKAL indsende en Depth-header med en værdi på "0", "1" eller "infinity" med en PROPFIND-anmodning. Servere SKAL understøtte "0"- og "1"-dybdeanmodninger på WebDAV-kompatible ressourcer og BØR understøtte "uendelig"-anmodninger. I praksis KAN understøttelse af anmodninger med uendelig dybde være deaktiveret på grund af de ydelses- og sikkerhedsproblemer, der er forbundet med denne adfærd. Servere BØR behandle en anmodning uden en Depth-header, som om en Depth: infinity
-header var inkluderet.
En klient kan indsende et propfind
XML-element i hoveddelen af anmodningsmetoden, der beskriver, hvilke oplysninger der anmodes om. Det er muligt at:
- anmode om bestemte egenskabsværdier ved at navngive de ønskede egenskaber i
prop
-elementet (rækkefølgen af egenskaber heri KAN ignoreres af serveren), - anmode om egenskabsværdier for de egenskaber, der er defineret i denne specifikation (som minimum) plus døde egenskaber, ved at bruge elementet
allprop
(elementetinclude
kan bruges sammen medallprop
til at instruere serveren i også at inkludere yderligere levende egenskaber, som måske ellers ikke ville være blevet returneret), - Forespørg om en liste med navne på alle de egenskaber, der er defineret på ressourcen, ved at bruge elementet
propname
.
En klient kan vælge ikke at indsende en request body. En tom PROPFIND-anmodning SKAL behandles, som om det var en allprop
-anmodning.
Bemærk, at allprop
ikke returnerer værdier for alle levende egenskaber. WebDAV-servere har i stigende grad dyrt beregnede eller lange egenskaber (se [RFC3253] og [RFC3744]) og returnerer ikke alle egenskaber allerede. I stedet kan WebDAV-klienter bruge propname
-anmodninger til at finde ud af, hvilke live-egenskaber der findes, og anmode om navngivne egenskaber, når de henter værdier. For en live-egenskab, der er defineret et andet sted, kan denne definition angive, om den pågældende live-egenskab skal returneres i allprop
-anmodninger eller ej.
Alle servere SKAL understøtte returnering af et svar af indholdstypen text/xml
eller application/xml
, der indeholder et multistatus
XML-element, som beskriver resultaterne af forsøgene på at hente de forskellige egenskaber.
Hvis der opstår en fejl ved hentning af en egenskab, SKAL et korrekt fejlresultat inkluderes i svaret. En anmodning om at hente værdien af en egenskab, der ikke findes, er en fejl og SKAL noteres med et response
XML-element, der indeholder en 404 (Not Found)-statusværdi.
Således SKAL multistatus
XML-elementet for en samlingsressource indeholde et response
XML-element for hver medlems-URL i samlingen, uanset hvilken dybde der blev anmodet om. Det BØR IKKE indeholde nogen response
-elementer for ressourcer, der ikke er WebDAV-kompatible. Hvert response
-element SKAL indeholde et href
-element, der indeholder URL'en til den ressource, som egenskaberne i prop
-XML-elementet er defineret for. Resultater for en PROPFIND på en samlingsressource returneres som en flad liste, hvor rækkefølgen af poster ikke har betydning. Bemærk, at en ressource kun kan have én værdi for en egenskab med et givet navn, så egenskaben vises måske kun én gang i PROPFIND-svar.
Egenskaber kan være underlagt adgangskontrol. I tilfælde af allprop
- og propname
-anmodninger, hvis en principal ikke har ret til at vide, om en bestemt egenskab findes, KAN egenskaben udelukkes lydløst fra svaret.
Nogle PROPFIND-resultater KAN caches med forsigtighed, da der ikke er nogen cache-valideringsmekanisme for de fleste egenskaber. Denne metode er både sikker og idempotent (se afsnit 9.1 i [RFC2616]).
Beskrivelse af PROPFIND-metoden
Eksempel på HTTP-metoden 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