PROPFIND

Metodo HTTP

Specifica del metodo HTTP PROPFIND

Il metodo PROPFIND recupera le proprietà definite sulla risorsa identificata dalla Request-URI, se la risorsa non ha membri interni, o sulla risorsa identificata dalla Request-URI e potenzialmente sulle sue risorse membro, se la risorsa è una collezione che ha URL membri interni. Tutte le risorse conformi a DAV DEVONO supportare il metodo PROPFIND e l'elemento XML propfind (Sezione 14.20) insieme a tutti gli elementi XML definiti per l'uso con tale elemento.

Un client DEVE inviare un'intestazione Depth con un valore di "0", "1" o "infinito" con una richiesta PROPFIND. I server DEVONO supportare le richieste di profondità "0" e "1" su risorse conformi a WebDAV e DEVONO supportare le richieste "infinito". In pratica, il supporto per le richieste a profondità infinita PUÒ essere disabilitato, a causa dei problemi di prestazioni e di sicurezza associati a questo comportamento. I server DOVREBBERO trattare una richiesta senza intestazione Depth come se fosse inclusa un'intestazione Depth: infinity.

Un client può inviare un elemento XML propfind nel corpo del metodo di richiesta che descrive quali informazioni vengono richieste. È possibile:

  • Richiedere valori di proprietà particolari, nominando le proprietà desiderate all'interno dell'elemento prop (l'ordine delle proprietà in questo elemento PUO' essere ignorato dal server),
  • Richiedere valori di proprietà per le proprietà definite in questa specifica (come minimo) più proprietà morte, utilizzando l'elemento allprop (l'elemento include può essere utilizzato con allprop per indicare al server di includere anche ulteriori proprietà vive che altrimenti non sarebbero state restituite),
  • Richiedere un elenco di nomi di tutte le proprietà definite sulla risorsa, utilizzando l'elemento propname.

Un client può scegliere di non inviare un corpo di richiesta. Un corpo di richiesta PROPFIND vuoto DEVE essere trattato come se fosse una richiesta allprop.

Nota che allprop non restituisce valori per tutte le proprietà vive. I server WebDAV hanno sempre più spesso proprietà calcolate in modo costoso o lunghe (vedere [RFC3253] e [RFC3744]) e non restituiscono già tutte le proprietà. Invece, i client WebDAV possono usare le richieste propname per scoprire quali sono le proprietà attive e richiedere le proprietà nominate quando recuperano i valori. Per una proprietà attiva definita altrove, tale definizione può specificare se tale proprietà attiva debba essere restituita o meno nelle richieste allprop.

Tutti i server DEVONO supportare la restituzione di una risposta di tipo text/xml o application/xml che contenga un elemento XML multistatus che descriva i risultati dei tentativi di recupero delle varie proprietà.

Se si verifica un errore nel recupero di una proprietà, nella risposta DEVE essere incluso un risultato di errore adeguato. Una richiesta di recupero del valore di una proprietà che non esiste è un errore e DEVE essere segnalata con un elemento XML response che contiene un valore di stato 404 (Not Found).

Di conseguenza, l'elemento XML multistatus per una risorsa di raccolta DEVE includere un elemento XML response per ogni URL membro della raccolta, a qualsiasi profondità sia stata richiesta. NON DEVE includere alcun elemento response per risorse non conformi a WebDAV. Ogni elemento response DEVE contenere un elemento href che contiene l'URL della risorsa su cui sono definite le proprietà nell'elemento XML prop. I risultati di un PROPFIND su una risorsa collezione sono restituiti come un elenco piatto il cui ordine delle voci non è significativo. Si noti che una risorsa può avere un solo valore per una proprietà di un dato nome, quindi la proprietà può comparire una sola volta nelle risposte di PROPFIND.

Le proprietà possono essere soggette a controllo di accesso. Nel caso delle richieste allprop e propname, se un mandante non ha il diritto di sapere se una particolare proprietà esiste, la proprietà PUÒ essere silenziosamente esclusa dalla risposta.

Alcuni risultati di PROPFIND POSSONO essere memorizzati nella cache, con attenzione, poiché non esiste un meccanismo di validazione della cache per la maggior parte delle proprietà. Questo metodo è sicuro e idempotente (vedere la sezione 9.1 di [RFC2616]).

Il metodo HTTP PROPFIND è stato specificato nella sezione 9.1 del documento RFC 4918 dall'Internet Engineering Task Force (IETF) e dal World Wide Web Consortium (W3C).

Descrizione del metodo PROPFIND

lavori in corso

Esempio per il metodo 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