PROPFIND
Méthode HTTP
Spécification de la méthode HTTP PROPFIND
Un client DOIT soumettre un en-tête Depth avec une valeur de "0", "1" ou "infinity" avec une requête PROPFIND. Les serveurs DOIVENT prendre en charge les demandes de profondeur "0" et "1" sur les ressources compatibles WebDAV et DEVRAIENT prendre en charge les demandes "infini". Dans la pratique, la prise en charge des requêtes de profondeur infinie PEUT être désactivée en raison des problèmes de performance et de sécurité associés à ce comportement. Les serveurs DEVRAIENT traiter une demande sans en-tête Depth comme si un en-tête Depth : infinity
était inclus.
Un client peut soumettre un élément XML propfind
dans le corps de la méthode de demande décrivant les informations demandées. Il est possible de :
- Demander des valeurs de propriétés particulières, en nommant les propriétés souhaitées dans l'élément
prop
(l'ordre des propriétés ici PEUT être ignoré par le serveur), - Demander des valeurs de propriétés pour les propriétés définies dans la présente spécification (au minimum) plus des propriétés mortes, en utilisant l'élément
allprop
(l'élémentinclude
peut être utilisé avecallprop
pour demander au serveur d'inclure également des propriétés vivantes supplémentaires qui n'auraient peut-être pas été renvoyées autrement), - Demander une liste de noms de toutes les propriétés définies sur la ressource, en utilisant l'élément
propname
.
Un client peut choisir de ne pas soumettre de corps de requête. Un corps de requête PROPFIND vide DOIT être traité comme s'il s'agissait d'une requête allprop
.
Notez que allprop
ne renvoie pas de valeurs pour toutes les propriétés en direct. Les serveurs WebDAV ont de plus en plus souvent des propriétés longues ou calculées de manière coûteuse (voir [RFC3253] et [RFC3744]) et ne renvoient pas déjà toutes les propriétés. Au lieu de cela, les clients WebDAV peuvent utiliser les requêtes propname
pour découvrir les propriétés existantes et demander les propriétés nommées lors de la récupération des valeurs. Pour une propriété vivante définie ailleurs, cette définition peut spécifier si cette propriété vivante doit être renvoyée dans les requêtes allprop
.
Tous les serveurs DOIVENT pouvoir renvoyer une réponse de type text/xml
ou application/xml
qui contient un élément XML multistatus
décrivant les résultats des tentatives de récupération des diverses propriétés. Une demande d'extraction de la valeur d'une propriété qui n'existe pas est une erreur et doit être signalée par un élément XML response
contenant une valeur d'état 404 (Not Found).
En conséquence, l'élément XML multistatus
pour une ressource de collection DOIT inclure un élément XML response
pour chaque URL de membre de la collection, quelle que soit la profondeur demandée. Il NE DOIT PAS inclure d'éléments response
pour les ressources qui ne sont pas compatibles avec WebDAV. Chaque élément response
DOIT contenir un élément href
qui contient l'URL de la ressource sur laquelle les propriétés de l'élément XML prop
sont définies. Les résultats d'une recherche PROPFIND sur une ressource de collection sont renvoyés sous la forme d'une liste plate dont l'ordre des entrées n'est pas significatif. Il convient de noter qu'une ressource ne peut avoir qu'une seule valeur pour une propriété d'un nom donné, de sorte que la propriété ne peut apparaître qu'une seule fois dans les réponses PROPFIND.
Les propriétés peuvent être soumises à un contrôle d'accès. Dans le cas des demandes allprop
et propname
, si un principal n'a pas le droit de savoir si une propriété particulière existe, la propriété PEUT être exclue silencieusement de la réponse.
Certains résultats PROPFIND PEUVENT être mis en cache, avec précaution, car il n'existe pas de mécanisme de validation du cache pour la plupart des propriétés. Cette méthode est à la fois sûre et idempotente (voir la section 9.1 de [RFC2616]).
Description de la méthode PROPFIND
Exemple de la méthode HTTP 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