PROPFIND
Método HTTP
Especificación del método HTTP PROPFIND
El método PROPFIND recupera propiedades definidas en el recurso identificado por la URL de la petición, si el recurso no tiene ningún miembro interno, o en el recurso identificado por la URL de la petición y potencialmente sus recursos miembros, si el recurso es una colección que tiene URLs de miembros internos. Todos los recursos compatibles con DAV DEBEN soportar el método PROPFIND y el elemento XML propfind
(Sección 14.20) junto con todos los elementos XML definidos para su uso con dicho elemento.
Un cliente DEBE enviar una cabecera Depth con un valor de "0", "1" o "infinity" con una petición PROPFIND. Los servidores DEBEN soportar peticiones de profundidad "0" y "1" en recursos compatibles con WebDAV y DEBERÍAN soportar peticiones "infinitas". En la práctica, el soporte para peticiones de profundidad infinita PUEDE estar deshabilitado, debido a los problemas de rendimiento y seguridad asociados a este comportamiento. Los servidores DEBERÍAN tratar una petición sin una cabecera Depth como si se hubiera incluido una cabecera Depth: infinity
.
Un cliente puede enviar un elemento propfind
XML en el cuerpo del método de petición describiendo qué información se está solicitando. Es posible:
- Solicitar valores de propiedades particulares, nombrando las propiedades deseadas dentro del elemento
prop
(el orden de las propiedades aquí PUEDE ser ignorado por el servidor), - Solicitar valores de propiedades para aquellas propiedades definidas en esta especificación (como mínimo) más propiedades muertas, utilizando el elemento
allprop
(el elementoinclude
puede utilizarse conallprop
para indicar al servidor que incluya también propiedades activas adicionales que no se hubieran devuelto de otro modo), - Solicitar una lista de nombres de todas las propiedades definidas en el recurso, utilizando el elemento
propname
.
Un cliente puede optar por no enviar un cuerpo de solicitud. Un cuerpo de solicitud PROPFIND vacío DEBE tratarse como si fuera una solicitud allprop
.
Tenga en cuenta que allprop
no devuelve valores para todas las propiedades activas. Los servidores WebDAV tienen cada vez más propiedades costosamente calculadas o largas (ver [RFC3253] y [RFC3744]) y no devuelven ya todas las propiedades. En su lugar, los clientes WebDAV pueden usar peticiones propname
para descubrir qué propiedades vivas existen, y pedir propiedades nombradas cuando recuperan valores. Para una propiedad activa definida en otro lugar, esa definición puede especificar si esa propiedad activa se devolverá o no en las peticiones allprop
.
Todos los servidores DEBEN admitir la devolución de una respuesta de tipo text/xml
o application/xml
que contenga un elemento multistatus
XML que describa los resultados de los intentos de recuperar las distintas propiedades.
Si se produce un error al recuperar una propiedad, DEBE incluirse en la respuesta un resultado de error adecuado. Una solicitud para recuperar el valor de una propiedad que no existe es un error y DEBE señalarse con un elemento response
XML que contenga un valor de estado 404 (Not Found).
En consecuencia, el elemento multistatus
XML para un recurso de colección DEBE incluir un elemento response
XML para cada URL miembro de la colección, a cualquier profundidad que se haya solicitado. NO DEBE incluir ningún elemento response
para recursos que no sean compatibles con WebDAV. Cada elemento response
DEBE contener un elemento href
que contenga la URL del recurso en el que se definen las propiedades del elemento XML prop
. Los resultados de un PROPFIND sobre un recurso de colección se devuelven como una lista plana cuyo orden de entradas no es significativo. Tenga en cuenta que un recurso sólo puede tener un valor para una propiedad de un nombre determinado, por lo que la propiedad sólo puede aparecer una vez en las respuestas PROPFIND.
Las propiedades pueden estar sujetas a control de acceso. En el caso de las solicitudes allprop
y propname
, si una entidad de seguridad no tiene derecho a saber si existe una propiedad en particular, la propiedad PUEDE excluirse silenciosamente de la respuesta.
Algunos resultados de PROPFIND PUEDEN almacenarse en caché, con cuidado, ya que no existe un mecanismo de validación de caché para la mayoría de las propiedades. Este método es a la vez seguro e idempotente (ver Sección 9.1 de [RFC2616]).
Posibilidad de que se almacenen en caché algunos resultados de PROPFIND.
Descripción del método PROPFIND
Ejemplo para el método 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