Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
development:net:webdav [2014-05-30 11:10] Martin Prochnowdevelopment:net:webdav [2017-04-05 11:10] Martin Prochnow
Zeile 1: Zeile 1:
 +====== WebDAV ======
  
 +
 +===== Begriffe =====
 +
 +^ Begriff ^ Beschreibung ^
 +| Collection | Container, der ein oder mehrere Ressourcen beinhaltet |
 +| Property | Ein benannter Wert, der eine Eigenschaft einer Ressource beschreibt |
 +
 +===== Collection =====
 +  * 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
 +
 +
 +===== Methoden =====
 +
 +^ 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  | ... |
 +
 +==== PROPFIND ====
 +  * 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.<code xml>
 +<?xml version="1.0" encoding="utf-8" ?>
 +<D:propfind xmlns:D="DAV:">
 +  <D:prop>
 +    <D:resourcetype/>
 +  </D:prop>
 +</D:propfind>
 +</code>
 +
 +===== HTTP-Header =====
 +
 +^ 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'' | ... | ... |
 +
 +===== Status-Codes =====
 +
 +^ Code ^
 +| ''207 Multi-Status'' |
 +| ''423 Locked'' |
 +| ''424 Failed Dependency'' |
 +| ''507  Insufficient Storage'' |
 +
 +===== XML =====
 +  * 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
 +
 +==== DTD ====
 +
 +<code xml>
 +<!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)* >
 +</code>
 +(http://greenbytes.de/tech/webdav/rfc2518.html#rfc.section.23, https://code.google.com/p/sardine/source/browse/trunk/webdav.xsd)
 +===== Properties =====
 +
 +^ 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 | |
 +
 +
 +===== Links =====
 +  * http://www.webdav.org/
 +  * http://tools.ietf.org/html/rfc4918
 +  * http://tools.ietf.org/html/rfc4331
 +  * http://sabre.io/dav/clients/
 +
 +{{tag>WebDAV Protokoll}}
  • Zuletzt geändert: 2017-04-05 11:11