PROPFIND

Metoda HTTP

Specificarea metodei HTTP PROPFIND

Metoda PROPFIND recuperează proprietățile definite pe resursa identificată prin Request-URI, dacă resursa nu are membri interni, sau pe resursa identificată prin Request-URI și potențial resursele membre ale acesteia, dacă resursa este o colecție care are URL-uri ale membrilor interni. Toate resursele compatibile DAV TREBUIE să suporte metoda PROPFIND și elementul XML propfind (secțiunea 14.20), împreună cu toate elementele XML definite pentru a fi utilizate cu elementul respectiv.

Un client TREBUIE să trimită un antet Depth cu valoarea "0", "1" sau "infinit" cu o cerere PROPFIND. Serverele TREBUIE să suporte solicitările de adâncime "0" și "1" pe resursele compatibile WebDAV și TREBUIE să suporte solicitările "infinit". În practică, suportul pentru cererile cu adâncime infinită POATE fi dezactivat, din cauza problemelor de performanță și securitate asociate cu acest comportament. Serverele TREBUIE să trateze o cerere fără antet Depth ca și cum ar fi fost inclus un antet Depth: infinity.

Un client poate trimite un element XML propfind în corpul metodei de cerere care descrie ce informații sunt solicitate. Este posibil să:

  • Solicita valori particulare ale proprietăților, prin numirea proprietăților dorite în cadrul elementului prop (ordonarea proprietăților aici POATE fi ignorată de server),
  • Solicita valori ale proprietăților pentru acele proprietăți definite în această specificație (cel puțin) plus proprietăți moarte, prin utilizarea elementului allprop (elementul include poate fi utilizat împreună cu allprop pentru a instrui serverul să includă și proprietăți vii suplimentare care ar fi putut să nu fie returnate altfel),
  • Solicită o listă de nume ale tuturor proprietăților definite pe resursă, prin utilizarea elementului propname.

Un client poate alege să nu trimită un corp al cererii. Un corp de cerere PROPFIND gol TREBUIE să fie tratat ca și cum ar fi o cerere allprop.

Notați că allprop nu returnează valori pentru toate proprietățile vii. Serverele WebDAV au din ce în ce mai des proprietăți calculate costisitor sau lungi (a se vedea [RFC3253] și [RFC3744]) și nu returnează deja toate proprietățile. În schimb, clienții WebDAV pot utiliza cereri propname pentru a descoperi ce proprietăți vii există și pot solicita proprietățile numite atunci când recuperează valorile. Pentru o proprietate activă definită în altă parte, definiția respectivă poate specifica dacă acea proprietate activă va fi sau nu returnată în cererile allprop.

Toate serverele TREBUIE să suporte returnarea unui răspuns de tip conținut text/xml sau application/xml care conține un element XML multistatus care descrie rezultatele încercărilor de recuperare a diferitelor proprietăți.

Dacă există o eroare în recuperarea unei proprietăți, atunci un rezultat de eroare corespunzător TREBUIE să fie inclus în răspuns. O solicitare de recuperare a valorii unei proprietăți care nu există este o eroare și TREBUIE să fie semnalată printr-un element XML response care conține o valoare de stare 404 (Not Found).

În consecință, elementul XML multistatus pentru o resursă de colecție TREBUIE să includă un element XML response pentru fiecare URL membru al colecției, la orice adâncime a fost solicitată. Acesta NU TREBUIE să includă niciun element response pentru resursele care nu sunt compatibile WebDAV. Fiecare element response TREBUIE să conțină un element href care conține URL-ul resursei pentru care sunt definite proprietățile din elementul prop XML. Rezultatele unui PROPFIND pe o resursă de colecție sunt returnate ca o listă plată a cărei ordine a intrărilor nu este semnificativă. Rețineți că o resursă poate avea o singură valoare pentru o proprietate cu un nume dat, astfel încât proprietatea poate apărea o singură dată în răspunsurile PROPFIND.

Proprietățile pot face obiectul controlului accesului. În cazul cererilor allprop și propname, dacă un mandant nu are dreptul să știe dacă o anumită proprietate există, atunci proprietatea POATE fi exclusă în mod silențios din răspuns.

Orice rezultate PROPFIND POT fi stocate în cache, cu precauție, deoarece nu există un mecanism de validare a cache-ului pentru majoritatea proprietăților. Această metodă este sigură și idempotentă (a se vedea secțiunea 9.1 din [RFC2616]).

Metoda HTTP PROPFIND a fost specificată în secțiunea 9.1 din documentul RFC 4918 de către Internet Engineering Task Force (IETF) și World Wide Web Consortium (W3C).

Descrierea metodei PROPFIND

lucrări în curs

Exemplu pentru metoda 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