PROPFIND

Méthode HTTP

Spécification de la méthode HTTP PROPFIND

propfind (section 14.20) ainsi que tous les éléments XML définis pour être utilisés avec cet élément.

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ément include peut être utilisé avec allprop 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]).

La méthode HTTP PROPFIND a été spécifiée dans la section 9.1 du document RFC 4918 par l'Internet Engineering Task Force (IETF) et le World Wide Web Consortium (W3C).

Description de la méthode PROPFIND

travaux en cours

Exemple de la méthode 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