Aller au contenu principal

Appendix D. Lock-null Resources (Ressources lock-null)

Annexe D. Lock-null Resources (Ressources lock-null)

Le modèle WebDAV original pour le verrouillage d'URL non mappées créait des "ressources lock-null". Ce modèle était trop compliqué et certains problèmes d'interopérabilité et d'implémentation ont été découverts. Le nouveau modèle WebDAV pour le verrouillage d'URL non mappées (voir Section 7.3) crée des "ressources vides verrouillées". Les ressources lock-null sont obsolètes. Cette section discute brièvement du modèle original car les clients DOIVENT être capables de gérer l'un ou l'autre modèle.

Dans le modèle original "ressource lock-null", qui n'est plus recommandé pour l'implémentation:

  • Une ressource lock-null apparaissait parfois comme "Not Found". Le serveur répond avec un 404 ou 405 à toute méthode sauf PUT, MKCOL, OPTIONS, PROPFIND, LOCK, UNLOCK.

  • Une ressource lock-null apparaît cependant comme un membre de sa collection parente.

  • Le serveur supprime entièrement la ressource lock-null (son URI devient non mappée) si son verrou disparaît avant qu'elle ne soit convertie en ressource régulière. Rappelez-vous que les verrous disparaissent non seulement lorsqu'ils expirent ou sont déverrouillés, mais sont également supprimés si une ressource est renommée ou déplacée, ou si une collection parente est renommée ou déplacée.

  • Le serveur convertit la ressource lock-null en ressource régulière si une requête PUT vers l'URL réussit.

  • Le serveur convertit la ressource lock-null en collection si une requête MKCOL vers l'URL réussit (bien que l'expérience d'interopérabilité ait montré que tous les serveurs ne suivaient pas cette exigence).

  • Les valeurs de propriété étaient définies pour les propriétés DAV:lockdiscovery et DAV:supportedlock mais pas nécessairement pour d'autres propriétés comme DAV:getcontenttype.

Les clients peuvent facilement interagir à la fois avec les serveurs qui prennent en charge l'ancien modèle "ressources lock-null" et le modèle recommandé de "ressources vides verrouillées" en n'essayant que PUT après un LOCK vers une URL non mappée, pas MKCOL ou GET.

D.1. Guidance for Clients Using LOCK to Create Resources (Conseils pour les clients utilisant LOCK pour créer des ressources)

Un client WebDAV implémenté selon cette spécification peut trouver des serveurs qui créent des ressources lock-null (implémentées avant cette spécification en utilisant [RFC2518]) ainsi que des serveurs qui créent des ressources vides verrouillées. La réponse à la requête LOCK n'indiquera pas quel type de ressource a été créé. Il existe quelques techniques qui aident le client à gérer l'un ou l'autre type.

  • Si le client souhaite éviter de créer accidentellement des ressources lock-null ou vides verrouillées, un en-tête "If-Match: *" peut être inclus avec les requêtes LOCK pour empêcher le serveur de créer une nouvelle ressource.

  • Si une requête LOCK crée une ressource et que le client souhaite ensuite écraser cette ressource en utilisant une requête COPY ou MOVE, le client doit inclure un en-tête "Overwrite: T".

  • Si une requête LOCK crée une ressource et que le client décide ensuite de se débarrasser de cette ressource, une requête DELETE est censée échouer sur une ressource lock-null et UNLOCK devrait être utilisé à la place. Mais avec une ressource vide verrouillée, UNLOCK ne fait pas disparaître la ressource. Par conséquent, le client pourrait devoir essayer les deux requêtes et ignorer une erreur dans l'une des deux requêtes.