WebDAV

Begriff Beschreibung
Collection Container, der ein oder mehrere Ressourcen beinhaltet
Property Ein benannter Wert, der eine Eigenschaft einer Ressource beschreibt
  • Zugriff über URL mit Slash am Ende
    • wenn nicht angegeben, soll der Server so arbeiten, als wenn er angegeben wurde
    • in der Antwort soll HTTP-Header Content-Location den Pfad mit Slash am Ende angeben
  • um sicher zu stellen, ob die angesprochene Ressource eine Collection ist, ist es für einen Client sicherer, die Property DAV::resourcetype zu verwenden
Name Compliance Class Beschreibung
OPTIONS 1 Abfrage der unterstützten HTTP-Methoden (entsprechend HTTP-Protokoll)
PROPFIND 1 Abfrage von Properties einer Ressource
PROPPATCH 1 Ändern oder Löschen von Properties einer Ressource
MKCOL 1 Anlegen einer Collection
GET/HEAD 1 Verhalten entsprechend HTTP-Protokoll, wenn auf Collection angewendet, kann eine „index.html“ zurück gegeben werden
DELETE 1 Löschen einer Ressource
PUT 1 Anlegen/Überschreiben einer Ressource, nicht spezifiziert für Collections
COPY 1 Kopieren einer Ressource
MOVE 1 Verschieben einer Ressource
LOCK 2
UNLOCK 2
  • Abfrage von Properties einer Ressource
  • Depth-Header muss vom Client angegeben werden
    • 0 - nur Properties der Ressource
    • 1 - Properties der Ressource und ihrer direkten Member, wenn Ressource eine Collection ist
    • infinity - muss nicht unterstützt werden
  • propfind-XML-Element im Request-Body beschreibt die abgefragten Informationen
    • wenn nur bestimmte Properties abgefragt werden, wird das props-Element verwendete, welches die Properties auflistet, z.B.
      <?xml version="1.0" encoding="utf-8" ?>
      <D:propfind xmlns:D="DAV:">
        <D:prop>
          <D:resourcetype/>
        </D:prop>
      </D:propfind>
Header Beschreibung mögl. Werte
DAV gibt an, das eine WebDAV-Ressource angesprochen wird und Compliance-Class verwendet wird 1, 2, 1,2, 1,3 (siehe auch RFC4918 10.1. u. 18.3)
Depth gibt an, ob und welche untergeordneten Ressourcen einer Ressource durch einen Request mit angesprochen werden sollen 0 - nur die Ressource
1 - die Ressource und ihre Internal member
infinity - die Ressource und all ihre Member
Destination gibt das Ziel für die Methoden COPY und MOVE an absoluter URI
If
Lock-Token
Oberwrite soll bei COPY/MOVE überschrieben werden T - überschreiben, wenn Ressource existiert
F - nicht überschreiben, wenn Ressource existiert
Timeout
Code
207 Multi-Status
423 Locked
424 Failed Dependency
507 Insufficient Storage
  • WebDAV verwendet für die Übertragung von Informationen XML
  • falls das XML eines Requests nicht well-formed ist, muss der Server mit dem Fehler 400 Bad Request antworten
<!ELEMENT activelock (lockscope, locktype, depth, owner?, timeout?, locktoken?, lockroot)>
<!ELEMENT allprop EMPTY>
<!ELEMENT depth (#PCDATA)>
<!ELEMENT error ANY>
<!ELEMENT exclusive EMPTY>
<!ELEMENT href (#PCDATA)>
<!ELEMENT include ANY>
<!ELEMENT location (href)>
<!ELEMENT lockentry (lockscope, locktype)>
<!ELEMENT lockinfo (lockscope, locktype, owner?)>
<!ELEMENT lockroot (href)>
<!ELEMENT lockscope (exclusive | shared)>
<!ELEMENT locktoken (href)>
<!ELEMENT locktype (write)>
<!ELEMENT multistatus (response*, responsedescription?)>
<!ELEMENT owner ANY>
<!ELEMENT prop ANY>
<!ELEMENT propertyupdate (remove | set)+>
<!ELEMENT propfind ( propname | (allprop, include?) | prop )>
<!ELEMENT propname EMPTY>
<!ELEMENT propstat (prop, status, error?, responsedescription?)>
<!ELEMENT remove (prop)>
<!ELEMENT response (href, ((href*, status)|(propstat+)), error?, responsedescription? , location?)>
<!ELEMENT responsedescription (#PCDATA)>
<!ELEMENT set (prop)>
<!ELEMENT shared EMPTY>
<!ELEMENT status (#PCDATA)>
<!ELEMENT timeout (#PCDATA)>
<!ELEMENT write EMPTY>
 
<!ELEMENT creationdate (#PCDATA) >
<!ELEMENT displayname (#PCDATA) >
<!ELEMENT getcontentlanguage (#PCDATA) >
<!ELEMENT getcontentlength (#PCDATA) >
<!ELEMENT getcontenttype (#PCDATA) >
<!ELEMENT getetag (#PCDATA) >
<!ELEMENT getlastmodified (#PCDATA) >
<!ELEMENT lockdiscovery (activelock)* >
<!ELEMENT supportedlock (lockentry)* >
<!ELEMENT lock-token-submitted (href+) >
<!ELEMENT no-conflicting-lock (href)* >

(http://greenbytes.de/tech/webdav/rfc2518.html#rfc.section.23, https://code.google.com/p/sardine/source/browse/trunk/webdav.xsd)

Name Mögliche Werte
creationdate ISO8601-konforme Zeitangabe des Erstellungsdatum
displayname Anzeigename für die Ressource, muss nicht im Zusammenhang mit der URI stehen
getcontentlanguage
getcontentlength Entspricht der Angabe im Content-Length-Header in der Antwort auf eine GET-Abfrage
getcontenttype Entspricht der Angabe im Content-Type-Header in der Antwort auf eine GET-Anfrage
getetag
getlastmodified RFC1123-konforme Zeitangabe der letzten Änderung
lockdiscovery
resourcetype collection, wenn angefragte Ressource eine Collection ist, ansonsten leer
supportedlock
  • Zuletzt geändert: 2017-04-05 13:11