# WebDAV

WebDAV is een protocol op het internet dat een uitbreiding is van het protocol HTTP. De afkorting staat voor Web-based Distributed Authoring and Versioning, wat vrij vertaald neerkomt op webgebaseerd en verdeeld auteurschap met versiebeheer. Distributed authoring verwijst naar user-generated content.

## Geschiedenis

Het begrip "WebDAV" ontstond toen Jim Whitehead in 1996 het W3C overtuigde om twee bijeenkomsten te houden over distributed authoring op het wereldwijde web waar mensen samen kwamen om over mogelijke oplossingen te discussiëren. De oorspronkelijke visie van het world wide web zoals uiteengezet door Tim Berners-Lee was zowel een lees- als schrijfbaar medium. Eigenlijk was zijn eerste webbrowser (WorldWideWeb) in staat om op afstand pagina's te bekijken en te bewerken. Doordat het web groeide, veranderde het in een alleen-lezen-medium.
De groep van mensen die elkaar ontmoetten bij het W3C beslisten om een IETF-werkgroep te vormen. Zo'n IETF leek een normale keuze omdat HTTP hier werd gestandaardiseerd en er werd verondersteld dat de uitkomst van deze inspanningen zou bestaan uit uitbreidingen voor HTTP.
Toen het werk aan het protocol begon werd duidelijk dat het combineren van zowel distributed authoring als versiebeheer te ingewikkeld was en dat de taken verdeeld zouden moeten worden. De WebDAV-werkgroep besloot daarom om te focussen op distributed authoring, en versiebeheer uit te stellen naar de toekomst. Sommige leden grapten dan ook dat de groep beter WebDA zou heten.

## Publicaties

De WebDAV-werkgroep heeft verschillende documenten gepubliceerd:
* een benodigdhedendocument: "Requirements for a Distributed Authoring and Versioning Protocol for the World Wide Web" RFC 2291,
* een basisdocument met alle informatie over het WebDAV-protocol: "HTTP Extensions for Distributed Authoring -- WEBDAV" RFC 2518,
* het verzamelingenprotocol: "Web Distributed Authoring and Versioning (WebDAV) Ordered Collections Protocol" RFC 3648 and
* het toegangscontroleprotocol: "Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol" RFC 3744.
De WebDAV-werkgroep werkt nog steeds aan uitbreidingen voor WebDAV.

## Gerelateerd werk

De WebDAV werkgroep bracht nog andere IETF-werkgroepen voort waaronder de DAV Searching and Locating-werkgroep (DASL) en de Web Versioning and Configuration Management-werkgroep (DELTAV).
DASL ontwikkelde nooit een officiële standaard hoewel er een aantal implementaties van het laatste ontwerp werden gemaakt. Het werk gaat voort, maar niet meer in een werkgroep.
DELTAV ontwikkelde de versiebeheerextensies voor WebDAV onder het RFC-nummer 3253, waardoor WebDAV zijn 'V' terugkreeg.

## Werkwijze

De bedoeling van het WebDAV-protocol is ervoor te zorgen dat het wereldwijde web een leesbaar en schrijfbaar medium wordt. Daarom voorziet het in de mogelijkheid om op afstand documenten aan te maken, te veranderen en te verplaatsen op een server (meestal een webserver). Hierdoor kunnen documenten op een website bijgewerkt worden, maar bestanden kunnen ook bewaard worden via het web, en ze kunnen daarna weer geopend worden. De meeste moderne besturingssystemen ondersteunen WebDAV, waardoor de gebruiker bestanden op een WebDAV-server kan gebruiken alsof ze lokaal op de computer staan. Ook veel software zoals Apache, KDE, Microsoft Exchange, IIS, Plone, GNOME, SAP, Subversion en contentmanagementsystemen zoals SharePoint en dotCMS ondersteunen het WebDAV-protocol.

## Beschrijving

Het protocol bestaat uit een verzameling nieuwe methodes en headers voor gebruik met HTTP, en het is zeer waarschijnlijk ook het eerste protocol dat gebruik maakte van XML.
WebDAV voegt de volgende methodes toe aan HTTP:
* PROPFIND - gebruikt om eigenschappen op te vragen in XML-vorm vanaf een bron.
* PROPPATCH - gebruikt om meerdere eigenschappen tegelijk te veranderen of te verwijderen.
* MKCOL - gebruikt om verzamelingen aan te maken (denk aan een map).
* COPY - gebruikt om een bron van de ene URI naar de andere te kopiëren.
* MOVE - gebruikt om een bron van de ene URI naar de andere te verplaatsen.
* LOCK - gebruikt om een bron te vergrendelen.
* UNLOCK - gebruikt om een bron te ontgrendelen.