WebDAV
View on WikipediaThis article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
|
| Communication protocol | |
| OSI layer | Application |
|---|---|
| Port(s) | 80, 443 |
| RFC(s) | RFC 2518, RFC 4918 |
| Website | www |
WebDAV (Web Distributed Authoring and Versioning) is a set of extensions to the Hypertext Transfer Protocol (HTTP), which allows user agents to collaboratively author contents directly in an HTTP web server by providing facilities for concurrency control and namespace operations, thus allowing the Web to be viewed as a writeable, collaborative medium and not just a read-only medium.[1] WebDAV is defined in RFC 4918 by a working group of the Internet Engineering Task Force (IETF).[2]
The WebDAV protocol provides a framework for users to create, change and move documents on a server. The most important features include the maintenance of properties about an author or modification date, namespace management, collections, and overwrite protection. Maintenance of properties includes such things as the creation, removal, and querying of file information. Namespace management deals with the ability to copy and move web pages within a server's namespace. Collections deal with the creation, removal, and listing of various resources. Lastly, overwrite protection handles aspects related to the locking of files. It takes advantage of existing technologies such as Transport Layer Security, digest access authentication or XML to satisfy those requirements.[3]
Many[which?] modern operating systems (such as GNOME Desktop Environment for Linux) provide built-in client-side support for WebDAV.[citation needed]
History
[edit]WebDAV began in 1996 when Jim Whitehead worked with the World Wide Web Consortium (W3C) to host two meetings to discuss the problem of distributed authoring on the World Wide Web with interested people.[4][5] Tim Berners-Lee's original vision of the Web involved a medium for both reading and writing. In fact, Berners-Lee's first web browser, called WorldWideWeb, could both view and edit web pages; but, as the Web grew, it became a read-only medium for most users. Whitehead and other like-minded people wanted to transcend that limitation.[6][7]
The meetings resulted in the formation of an IETF working group because the new effort would lead to extensions to HTTP, which the IETF had started to standardize.
As work began on the protocol, it became clear that handling both distributed authoring and versioning together would involve too much work and that the tasks would have to be separated. The WebDAV group focused on distributed authoring, and left versioning for the future. (The Delta-V extension added versioning later – see the Extensions section below.)
The WebDAV working group concluded its work in March 2007, after the Internet Engineering Steering Group (IESG) accepted an incremental update to RFC 2518. Other extensions left unfinished at that time, such as the BIND method, have been finished by their individual authors, independent of the formal working group.[8]
Implementation
[edit]
WebDAV extends the set of standard HTTP verbs and headers allowed for request methods. The added verbs include:
| Verb | Action |
|---|---|
| COPY | copy a resource from one uniform resource identifier (URI) to another |
| LOCK | put a lock on a resource. WebDAV supports both shared and exclusive locks. |
| MKCOL | create collections (also known as a directory) |
| MOVE | move a resource from one URI to another |
| PROPFIND | retrieve properties, stored as XML, from a web resource. It is also overloaded to allow one to retrieve the collection structure (also known as directory hierarchy) of a remote system. |
| PROPPATCH | change and delete multiple properties on a resource in a single atomic act |
| UNLOCK | remove a lock from a resource |
Properties
[edit]The properties of WebDAV protocol are name–value pair, in which a "name" is a Uniform Resource Identifier (URI) and the "values" are expressed through XML elements. Furthermore, the methods to handle the properties are PROPFIND and PROPPATCH.[9]
Documents produced by the working group
[edit]The WebDAV working group produced several works:
- a requirements document: "Requirements for a Distributed Authoring and Versioning Protocol for the World Wide Web" RFC 2291, issued February 1998
- a base protocol document (excluding versioning, despite its title): "HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)" RFC 4918, issued June 2007 (which updates and supersedes "HTTP Extensions for Distributed Authoring – WebDAV" RFC 2518, issued February 1999)
- the ordered collections protocol: "Web Distributed Authoring and Versioning (WebDAV) Ordered Collections Protocol" RFC 3648, issued December 2003
- the access control protocol: "Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol" RFC 3744, issued May 2004
- a quota specification: "Quota and Size Properties for Distributed Authoring and Versioning (DAV) Collections" RFC 4331, issued February 2006
- a redirect specification: "Web Distributed Authoring and Versioning (WebDAV) Redirect Reference Resources" RFC 4437, issued March 2006
Other documents published through IETF
[edit]- the versioning protocol: "Versioning Extensions to WebDAV (Web Distributed Authoring and Versioning)" RFC 3253 (created by the Delta-V working group)
- a specification of WebDAV property datatypes: "Datatypes for Web Distributed Authoring and Versioning (WebDAV) Properties" RFC 4316
- a document defining how to initiate mounting of a WebDAV resource: "Mounting Web Distributed Authoring and Versioning (WebDAV) Servers" RFC 4709
- a calendar access protocol: "Calendaring Extensions to WebDAV (CalDAV)" RFC 4791
- a query protocol: "Web Distributed Authoring and Versioning (WebDAV) SEARCH" RFC 5323
- an extension to the WebDAV ACL specification: "WebDAV Current Principal Extension" RFC 5397
- an extension to the WebDAV MKCOL method: "Extended MKCOL for Web Distributed Authoring and Versioning (WebDAV)" RFC 5689
- an extension of the collection model, defining creation and discovery of additional bindings to a resource: "Binding Extensions to Web Distributed Authoring and Versioning (WebDAV)" RFC 5842
- an application of POST to WebDAV collections: "Using POST to Add Members to Web Distributed Authoring and Versioning (WebDAV) Collections" RFC 5995
- an extension which allows synchronizing large collections efficiently: "Collection Synchronization for Web Distributed Authoring and Versioning (WebDAV)" RFC 6578
Extensions and derivatives
[edit]For versioning, the Delta-V protocol under the Web Versioning and Configuration Management working group adds resource revision tracking, published in RFC 3253.
For searching and locating, the DAV Searching and Locating (DASL) working group never produced any official standard although there are a number of implementations of its last draft. Work continued as non-working-group activity.[10] The WebDAV Search specification attempts to pick up where the working group left off, and was published as RFC 5323 in November 2008.[11]
For calendaring, CalDAV is a protocol allowing calendar access via WebDAV. CalDAV models calendar events as HTTP resources in iCalendar format, and models calendars containing events as WebDAV collections.
For groupware, GroupDAV is a variant of WebDAV which allows client/server groupware systems to store and fetch objects such as calendar items and address book entries instead of web pages.
For MS Exchange interoperability, WebDAV can be used for reading/updating/deleting items in a mailbox or public folder. WebDAV for Exchange has been extended by Microsoft to accommodate working with messaging data. Exchange Server version 2000, 2003, and 2007 support WebDAV. However, WebDAV support has been discontinued in Exchange 2010[12] in favor of Exchange Web Services (EWS), a SOAP/XML based API.
Additional Windows-specific extensions
[edit]As part of the Windows Server Protocols (WSPP) documentation set,[13] Microsoft published the following protocol documents detailing extensions to WebDAV:
- [MS-WDVME]: Web Distributed Authoring and Versioning (WebDAV) Protocol: Microsoft Extensions.[14] These extensions include a new verb and new headers, and properties that enable previously unmanageable file types and optimize protocol interactions for file system clients. These extensions introduce new functionality into WebDAV, optimize processing, and eliminate the need for special-case processing.
- [MS-WDV]: Web Distributed Authoring and Versioning (WebDAV) Protocol: Client Extensions.[15] The client extensions in this specification extend the WebDAV Protocol by introducing new headers that both enable the file types that are not currently manageable and optimize protocol interactions for file system clients. These extensions do not introduce new functionality into the WebDAV Protocol, but instead optimize processing and eliminate the need for special-case processing.
- [MS-WDVSE]: Web Distributed Authoring and Versioning (WebDAV) Protocol: Server Extensions.[16] The server extensions in this specification extend WebDAV by introducing new HTTP request and response headers that both enable the file types that are not currently manageable and optimize protocol interactions for file system clients. This specification also introduces a new WebDAV method that is used to send search queries to disparate search providers.
- [MS-WEBDAVE]: Web Distributed Authoring and Versioning Error Extensions Protocol Specification.[17] This SharePoint Front-End Protocol describes extended error codes and extended error handling mechanism specified in [MS-WDV] to enable compliant servers to report error condition details on a server response.
WebDAV clients
[edit]| Client | Creator | Operating system support | License | Interface |
|---|---|---|---|---|
| Cyberduck | David V. Kocher | Windows, macOS | GPL | GUI |
| davfs2 | GNOME team | FUSE | GPL | VFS |
| davix | CERN | Windows, Linux, macOS | LGPL | CLI |
| EasySync | Samuel CHEMLA | Android | MIT | Service |
| DAVx⁵ | BitfireAT | Android | GPL | Service |
| X-plore | Lonely Cat Games | Android | Proprietary | GUI |
| GVfs | GNOME team | GNOME | GPL | VFS |
| KIO | KDE team | KDE | GPL | VFS |
| Konqueror | KDE team | KDE | GPL | GUI |
| GNOME Files | GNOME team | GNOME | GPL | GUI |
| SmartFTP | SmartSoft Ltd | Windows | Proprietary | GUI |
| WebDrive | South River Technologies | Windows, macOS, iOS, Android | Proprietary | VFS |
| WinSCP | Martin Přikryl | Windows | GPL | CLI and GUI |
| WebClient (Deprecated)[18] | Microsoft | Windows | Same as Windows | service |
WebDAV libraries
[edit]| Libraries | Creator | Operating system or platform | License | Language |
|---|---|---|---|---|
| Apache Wink | Apache Software foundation | JVM | Java | |
| Apache Tomcat | Apache Software foundation | JVM | Java | |
| Apache Jackrabbit | Apache Software foundation | JVM | ASF | Java |
| sabre/dav | fruux | Windows, Linux, macOS | New BSD | PHP |
Alternatives to WebDAV
[edit]- File Transfer Protocol (FTP), a simple and widely adopted network protocol based on IP, allows users to transfer files between network hosts. FTPS extends FTP for secure traffic.
- SSH File Transfer Protocol (SFTP), an extension of the Secure Shell protocol (SSH) version 2.0, provides secure file-transfer capability; and scp, a form of SFTP that runs as a single command similar to a regular cp (copy) command in the shell.
- Rsync, a protocol and a command similar to scp, that can also skip rewriting identical files and portions of files, or skip newer files, etc.
- A distributed file system such as the Server Message Block (SMB) protocol allows Microsoft Windows and open-source Samba clients to access and manage files and folders remotely on a suitable file server. Commonly used for multimedia streaming over Ethernet and widely supported by Smart TVs.[19]
- AtomPub, an HTTP-based protocol for creating and updating web resources, can be used for some of the use cases of WebDAV. It is based on standard HTTP verbs with standardized collection resources that behave somewhat like the WebDAV model of directories.
- CMIS, a standard consisting of a set of Web services for sharing information among disparate content repositories, seeks to ensure interoperability for people and applications using multiple content repositories; it has both SOAP- and AtomPub-based interfaces
- Wiki software, such as MediaWiki.
- Linked Data Platform (LDP), a Linked Data specification defining a set of integration patterns for building RESTful HTTP services that are capable of read-write of RDF data.
- Object storage such as OpenStack Swift or Amazon S3
See also
[edit]References
[edit]- ^ Whitehead & Goland 1999, p. 293.
- ^ Whitehead 1998, p. 34.
- ^ Whitehead & Goland 1999, p. 294.
- ^ "Proposed agenda for San Mateo Meeting". 1996.
- ^ "Brief mtg. summary". 1996.
- ^ "Re: Updated agenda".
- ^ Whitehead 1998, p. 40.
- ^ Whitehead 1998, p. 39-40.
- ^ Whitehead & Goland 1999, p. 299.
- ^ DASL Archived 2004-06-03 at the Wayback Machine
- ^ WebDav SEARCH
- ^ Discontinued Features: Exchange 2010 SP1 Help Microsoft TechNet
- ^ "WSPP – Windows Server Protocols documentation". 2011.
- ^ "MS-WDVME – Web Distributed Authoring and Versioning (WebDAV) Protocol: Microsoft Extensions". 2014.
- ^ "MS-WDV – Web Distributed Authoring and Versioning (WebDAV) Protocol: Client Extensions". 2011.
- ^ "MS-WDVSE – Web Distributed Authoring and Versioning (WebDAV) Protocol: Server Extensions". 2011.
- ^ "MS-WEBDAVE – Web Distributed Authoring and Versioning Error Extensions Protocol Specification". 2011.
- ^ "Deprecated features for Windows client". What's new in Windows. Microsoft. Retrieved 4 November 2023 – via Microsoft Learn.
- ^ Rau, Thomas (19 October 2017). "Filme, Musik & Bilder im Heimnetzwerk streamen". PC-WELT (in German). Retrieved 5 November 2020.
- Whitehead, E. James; Goland, Yaron Y. (1999). "WebDAV". Ecscw' 99. Neatherlands: Springer Science+Business Media. pp. 291–310. doi:10.1007/978-94-011-4441-4_16. ISBN 978-94-011-4441-4.
- Whitehead, E.J (1998). "WebDAV: IEFT standard for collaborative authoring on the Web". IEEE Internet Computing. 2 (5): 34–40. Bibcode:1998IIC.....2e..34W. doi:10.1109/4236.722228. ISSN 1941-0131.
External links
[edit]- Official WebDAV site
- Awesome WebDAV A curated list of awesome apps that support WebDAV and tools related to it.
- Davfs2 project
- Fusedav project
- WebDAV Apache modules
WebDAV
View on GrokipediaOverview
Definition and Purpose
Web Distributed Authoring and Versioning (WebDAV) is an extension to the Hypertext Transfer Protocol version 1.1 (HTTP/1.1), standardized by the Internet Engineering Task Force (IETF), that enables the creation, modification, and management of resources on remote web servers in a collaborative manner.[1] It defines a set of methods, headers, and content types that build upon HTTP to support distributed authoring, allowing clients to interact with web servers as if they were remote file systems.[1] This protocol facilitates operations such as uploading, editing, and organizing files directly over the web, without relying on separate protocols like FTP.[1] The primary purpose of WebDAV is to transform HTTP from a primarily read-only retrieval mechanism into a fully writable and collaborative medium, enabling users to perform authoring tasks including copying, moving, and deleting resources on a server.[3] By extending HTTP with these capabilities, WebDAV allows seamless management of web content, treating servers as extensible storage repositories accessible via standard web infrastructure.[3] This addresses the original limitations of basic HTTP, which lacked built-in support for such file system-like interactions.[11] WebDAV emerged in the late 1990s as part of IETF efforts to enhance web protocols for content management, with its core specification published in 1999.[12] It provides key benefits such as enabling remote document collaboration among multiple users, integrating with operating system file explorers and dedicated clients for intuitive access, and providing concurrency control through resource properties and locks to prevent overwrites.[1] These features promote efficient, distributed workflows for web-based authoring without the need for proprietary tools.[3]Key Features
WebDAV extends the stateless nature of HTTP by introducing stateful interactions, such as resource locking, which enable collaborative authoring while maintaining compatibility with standard web infrastructure.[1] A core feature is support for namespaces through hierarchical URLs, allowing resources to be organized in a tree-like structure that mirrors file system directories, facilitating distributed management across servers.[1] Collections function as directories, enabling the creation, deletion, and navigation of grouped resources, which supports scalable organization of content in shared environments.[1] Properties serve as metadata attached to resources, including server-managed live properties (e.g., creation dates) and client-defined dead properties, allowing rich description and querying of resources without altering their content.[1] Locking mechanisms provide concurrency control by permitting exclusive or shared locks on resources, preventing overwrite conflicts during multi-user editing sessions and ensuring data integrity in collaborative scenarios.[1] Resource discovery is facilitated through mechanisms that retrieve properties and collection memberships, enabling users to explore and assess resources efficiently.[1] Property management supports status reporting and updates, allowing participants to modify metadata and receive feedback on resource states during joint workflows.[1] Unlike plain HTTP's focus on retrieval, WebDAV integrates seamlessly with operating systems, permitting servers to be mounted as network drives in tools like Windows Explorer or macOS Finder, where resources appear and behave as local files for intuitive access and editing.[7][13] This mounting capability bridges web protocols with desktop file management, enhancing usability for distributed teams without requiring specialized software.[1]History
Development Origins
The development of WebDAV originated in 1996 when E. James Whitehead, then at the University of California, Irvine, collaborated with the World Wide Web Consortium (W3C) to address limitations in early web authoring tools, such as the lack of overwrite protection and namespace management.[2] In response, the Internet Engineering Task Force (IETF) formed the WWW Distributed Authoring and Versioning (WebDAV) working group in 1997.[3] Chaired by Jim Whitehead, with significant contributions from Greg Stein, the group aimed to standardize HTTP extensions for distributed web content authoring to meet the growing demands of web-based collaboration.[14][15] Initial working group drafts, including requirements documents, emerged in 1997, explicitly targeting the web's inherent read-only constraints by proposing mechanisms for resource manipulation and metadata handling.[16] These efforts built on the recognition that the original HTTP/1.1 specification lacked support for collaborative editing, prompting a focus on interoperability across diverse authoring tools.[17] Prior to formal RFC publication, pre-standardization prototypes played a crucial role in validating the protocol's design. In the late 1990s, Microsoft developed early implementations to enable features such as web folders, allowing users to treat HTTP servers as navigable file systems for direct editing.[18] Microsoft's Web Folders, integrated into Internet Explorer 5.0 in 1999, represented one such prototype that demonstrated practical WebDAV-like functionality for remote content management.[19] These experimental efforts highlighted the protocol's potential while informing iterative refinements in the working group. A primary motivation behind WebDAV's inception was addressing key challenges in collaborative web environments, particularly the absence of versioning and locking mechanisms in early content management systems. Without standardized locking, concurrent edits risked data overwrites, while the lack of versioning hindered tracking changes in shared resources—issues exacerbated by the web's shift toward dynamic, multi-user applications in the late 1990s.[17] By prioritizing these features, the working group sought to transform the web into a viable platform for distributed, version-aware authoring.[20]Standardization Milestones
The initial standardization of WebDAV occurred with the publication of RFC 2518 in February 1999, which defined it as an experimental extension to HTTP for distributed authoring and versioning.[12] This document introduced core methods like PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, and UNLOCK, establishing the foundational protocol for collaborative web resource management. A significant revision came with RFC 4918 in June 2007, which obsoleted RFC 2518 and advanced WebDAV to Proposed Standard status, incorporating clarifications on method behaviors, improved error handling, and interoperability enhancements based on implementation experience. This update refined resource properties, namespace handling, and status codes, such as introducing 507 Insufficient Storage, to better support practical deployments.[21] Subsequent advancements included RFC 5789 in March 2010, which standardized the PATCH method for partial resource updates, enabling more efficient modifications in WebDAV contexts without full resource replacement.[22] For calendar integration, RFC 4791 in March 2007 defined CalDAV as extensions to WebDAV for iCalendar data, facilitating scheduling and event management. Similarly, RFC 6352 in August 2011 specified CardDAV for vCard-based contact resources, extending WebDAV for address book operations, though no major revisions to the core protocol have occurred since 2007, with maintenance focused on extensions and errata. The IETF WebDAV Working Group concluded its activities in March 2007, transitioning oversight to ad-hoc updates and individual submissions rather than formal group milestones.[23] As of 2025, WebDAV remains at Proposed Standard maturity level per RFC 4918, with minor errata addressed through IETF processes and interoperability profiles published to aid adoption; while no full core revision has been issued, implementations have integrated it with modern protocols like HTTP/2 for improved performance in contemporary environments.Standards and Specifications
Core Protocol RFCs
The core protocol for WebDAV was initially defined in RFC 2518, published in February 1999 as a Proposed Standard that extended HTTP/1.1 to support distributed authoring and versioning capabilities.[24] This document introduced key concepts such as resource properties, collections, and methods for managing them, but it contained several ambiguities and inconsistencies in areas like namespace handling and error reporting that hindered interoperability among implementations.[24] These issues were addressed and the protocol refined in RFC 4918, published in June 2007 as the proposed standard that obsoleted RFC 2518.[1] RFC 4918 specifies HTTP extensions for Web Distributed Authoring and Versioning (WebDAV), defining seven new methods—including PROPFIND for retrieving properties, PROPPATCH for modifying them, MKCOL for creating collections, COPY and MOVE for resource manipulation, and LOCK/UNLOCK for concurrency control—along with new status codes such as 207 Multi-Status to handle partial successes in multi-operation requests.[1] It also establishes the use of XML for encoding property values and introduces the DAV: XML namespace to avoid conflicts with other XML vocabularies, ensuring structured representation of metadata like resource creation dates or authorship.[1] WebDAV's integration with HTTP relies on the foundational HTTP/1.1 semantics outlined in RFC 2616 (June 1999), which has since been updated and split into the RFC 7230 series (2014), providing the core messaging framework, including request methods, headers, and status codes that WebDAV builds upon.[25] For interoperability, RFC 4918 mandates specific behaviors in compliant implementations, such as precise handling of the Depth header in operations like PROPFIND to control search scope (e.g., limiting to the resource itself or including subordinates), and requires servers to support mandatory properties like DAV:resourcetype for identifying collections versus non-collections.[1] These requirements promote consistent behavior across clients and servers, facilitating reliable remote management of web resources.Working Group Documents
The WebDAV working group within the Internet Engineering Task Force (IETF) produced several key documents that extended the core protocol to support advanced collaborative features, such as versioning, access control, and resource management, building on the foundational HTTP methods for authoring. These documents, primarily in the form of Request for Comments (RFCs), addressed limitations in the baseline specification by introducing mechanisms for maintaining resource histories, enforcing permissions, and handling multiple references to the same resource, thereby enhancing WebDAV's utility for distributed team environments. One of the primary extensions is DeltaV, specified in RFC 3253 (2002), which provides versioning and configuration management capabilities for WebDAV resources. DeltaV introduces concepts like workspaces, versions, and baselines to track changes over time, allowing users to create version-controlled histories without disrupting ongoing work. Key methods include CHECKOUT, which prepares a resource for editing by creating a checked-out version, and CHECKIN, which commits changes and generates a new version; these enable baseline versioning where a collection of resources can be treated as a single configurable unit. Additionally, DeltaV supports activities for grouping related changes and properties for metadata like version names and labels, facilitating collaborative development. Access control in WebDAV is addressed by the ACL specification in RFC 3744 (2004), which defines a framework for managing permissions on resources using access control lists (ACLs). This document introduces principal resources to represent users or groups and privilege sets, such as DAV:read for viewing content, DAV:write for modifications, and DAV:unlock for releasing locks. ACLs are stored as properties on resources, allowing fine-grained control over operations like PROPFIND and COPY, with inheritance from parent collections to simplify administration. The specification also outlines abstract grants and denies, ensuring compatibility with diverse authentication mechanisms while preventing common security issues like over-permissive access. The Binding protocol, detailed in RFC 5842 (2010), extends WebDAV to support multiple bindings for a single resource, enabling redirects and alternative URIs without duplicating content. It defines the BIND method to create a new binding (e.g., an additional URI pointing to the same resource) and the UNBIND method to remove one, preserving the resource's state across bindings. This is particularly useful for scenarios like hierarchical views or load balancing, where a resource might be accessible via multiple paths; the specification includes rules for handling collections and prohibits certain operations on bind-aware resources to maintain consistency. Bindings integrate with core WebDAV methods, such as allowing PROPFIND to resolve across redirects. WebDAV SEARCH (also known as DASL), specified in RFC 5323 (2008), provides a framework for querying and searching resources using SQL-like query languages or other schemata. It introduces the SEARCH method and related report formats to enable clients to discover resources based on properties, content, or other criteria, supporting both basic and advanced search scopes with extensibility for custom query grammars. This extension enhances WebDAV's capabilities for information retrieval in large-scale collections. Redirect references in WebDAV are defined in RFC 4437 (2006), an experimental specification that allows resources to act as symbolic links or redirects to other URIs. It introduces the REBIND method for updating reference targets and properties for reference discovery, enabling efficient handling of aliases without content duplication. This is useful for maintaining links in dynamic environments, with safeguards against cycles and integration with core methods like COPY and MOVE. Collaborative ordering of resources within collections is covered in RFC 3648 (2002), the WebDAV Ordered Collections Protocol, which allows servers to maintain a defined sequence for member resources. This document introduces properties like DAV:ordered-by to specify ordering criteria (e.g., by name or custom index) and methods such as ORDERPATCH to reorder members without altering the collection's content. It supports partial ordering for dynamic lists and ensures compatibility with existing WebDAV operations, such as MKCOL for creating ordered collections, thereby aiding applications like playlists or workflows that require predictable traversal. These features originated from Internet-Drafts within the working group and were standardized to promote interoperability in ordered resource management.Additional IETF Publications
The WebDAV Current Principal Extension, outlined in RFC 5397 (2008), introduces the<DAV:current-user-principal> property to enable clients to retrieve the principal resource URL associated with the currently authenticated HTTP user.[26] This property serves as an extension to the WebDAV Access Control Protocol defined in the working group documents, allowing servers to efficiently identify the current user for access control evaluations without requiring separate PROPFIND requests or authentication exchanges.[26] By providing this direct mapping, the extension reduces latency in scenarios involving protected resources and supports more dynamic permission checks in collaborative environments.[26]
RFC 5689 (2009) extends the HTTP MKCOL method within WebDAV to permit the creation of collections with specified resource types and initial property values, addressing limitations in the original specification for initializing structured resources. This individual submission updates core WebDAV behaviors in RFC 4918 and related protocols like CalDAV (RFC 4791), enabling clients to set properties such as access controls or metadata at collection creation time, thereby streamlining resource setup in authenticated sessions. The extension complements authentication mechanisms by facilitating immediate application of principal-based configurations during resource provisioning.
Metadata mappings for WebDAV properties, particularly for standards like Dublin Core, are specified in the Dublin Core Metadata Initiative's guideline document, which defines conventions such as using the <DAV:creator> property name to represent the dc:creator element.[27] This mapping allows WebDAV servers to integrate widely adopted metadata vocabularies as live or dead properties, promoting interoperability for resource description without altering the core protocol.[27] Servers implementing this can expose Dublin Core elements via standard PROPPATCH and PROPFIND operations, enhancing searchability and cataloging in distributed authoring systems.[27]
RFC 6638 (2012), while primarily an extension to CalDAV, provides scheduling features applicable to broader WebDAV implementations by defining new methods like SCHEDULE-INBOX-URL and SCHEDULE-OUTBOX-URL reports for managing calendar invitations and responses. These mechanisms build on WebDAV's resource model to support asynchronous collaboration, such as free-busy queries and reply handling, and can be adapted for non-calendaring use cases involving principal interactions. The specification ensures compatibility with WebDAV ACL basics, where access decisions rely on authenticated principals for scheduling operations.
Technical Details
HTTP Extensions and Methods
WebDAV extends HTTP/1.1 by defining new methods that support distributed authoring capabilities, such as creating hierarchical structures, copying and moving resources, managing metadata properties, and controlling concurrent access. These methods operate on uniform resource identifiers (URIs) and leverage HTTP's request-response model while introducing XML-based bodies for structured data exchange.[1] The MKCOL method creates a new collection (analogous to a directory) at the specified URI, with the request body optionally containing initial properties or subcollections; a successful response returns 201 Created if the collection is newly established. The COPY method duplicates a resource to a specified destination, supporting shallow or deep copies via the Depth header, and returns 201 Created for new resources or 200 OK for overwrites. Similarly, the MOVE method relocates a resource by combining semantics of COPY and DELETE, requiring server-side atomicity for the operation.[1] For property management, the PROPFIND method retrieves properties from a resource or collection, with the request body specifying which properties to return (such as all live properties via<allprop/> or specific ones via <prop/> elements); it supports querying the resource itself, its members, or recursively. The PROPPATCH method modifies properties by setting, removing, or replacing them in an XML body, returning 200 OK on success with a multistatus report of changes. Properties queried via PROPFIND provide metadata about resources, as covered in the Resource Properties section. To address concurrency, the LOCK method establishes a lock on one or more resources to prevent conflicting modifications, with an XML body defining lock details, while the UNLOCK method releases a lock using an opaque lock token in the request header.[1]
WebDAV introduces several new HTTP headers to refine operation scope and conditions. The Depth header controls the extent of operations on collections, accepting values of "0" (header), "1" (this resource and immediate members), or "infinity" (recursive), and is applicable to methods like PROPFIND, PROPPATCH, COPY, MOVE, and MKCOL. The If header enforces preconditions for requests, typically using lock tokens or etags to verify resource state before applying changes, such as in PUT or DELETE operations. The Destination header specifies the target URI for COPY and MOVE methods, ensuring the server performs the relocation or duplication accordingly.[1]
Error handling in WebDAV incorporates new status codes and XML-formatted responses for complex scenarios. The 424 Failed Dependency status indicates that a method failed due to the failure of one or more independent actions, often in batch operations like COPY. The 507 Insufficient Storage status is returned when the server lacks sufficient space to complete the requested action, such as during MKCOL or PUT. For methods involving multiple sub-requests, like PROPFIND on a collection, the 207 Multi-Status response conveys partial successes or failures in an XML document, allowing detailed per-resource reporting without a single overall failure code.[1]
XML structures underpin many WebDAV interactions, particularly in requests and multistatus responses. The <D:propstat> element encapsulates the status of a property or set of properties within a response, containing a <D:prop> subtree for the values and a <D:status> for the HTTP status (e.g., 200 OK or 404 Not Found). For example, a PROPFIND request to retrieve all properties might use the following body:
<?xml version="1.0" encoding="utf-8" ?>
<D:propfind xmlns:D="DAV:">
<D:allprop/>
</D:propfind>
The corresponding response under <D:multistatus> would include <D:response> elements for each affected resource, each with a <D:propstat> detailing the properties and their statuses, enabling clients to parse granular results efficiently.[1]
Resource Properties
WebDAV provides a mechanism for associating metadata with resources through properties, enabling clients to store, retrieve, and manage descriptive data separate from the resource's primary content. These properties facilitate distributed authoring by allowing customization and inspection of resource attributes in a structured manner.[1] Properties are categorized into live and dead types. Live properties are server-enforced, with their values often computed, protected, or derived from the resource state; for example, the DAV:getcontentlength property returns the byte length of the resource's entity body, calculated by the server.[1] In contrast, dead properties are fully client-controlled, lacking server validation of semantics or syntax, and are used for arbitrary metadata such as a custom ns:author element in a user-defined namespace.[1] Property names follow XML namespace conventions, using the DAV: namespace for standard elements defined in the protocol and arbitrary custom namespaces for extensions. Properties are represented and manipulated via XML structures, such as the <D:propertyupdate> element for batch modifications.[1] Retrieval of properties occurs via the PROPFIND method, which accepts a Depth header and a request body specifying the desired properties or options: "allprop" to fetch all live and dead properties, "propname" to list names without values, or specific ones via theLocking Mechanisms
WebDAV provides locking mechanisms to serialize access to resources, preventing conflicts during concurrent modifications by multiple clients. These mechanisms allow a client to obtain a lock on a resource, ensuring that only authorized principals can modify it while the lock is active. Locking in WebDAV is designed to support collaborative authoring environments, where resources might be edited simultaneously by distributed users. Locks in WebDAV are categorized by scope, which determines the level of access granted to other clients. An exclusive lock prevents any other principal from obtaining a conflicting lock on the same resource or its descendants (depending on depth), effectively serializing write access to the lock owner. In contrast, a shared lock allows multiple principals to acquire compatible shared locks, enabling collaborative read or write operations as long as no exclusive lock is held. Depth handling further refines the lock's reach: a depth of 0 limits the lock to the resource itself, while a depth of infinity extends it to all descendants in the collection hierarchy. This allows fine-grained control over whether locks protect individual files or entire directory structures. Locking operations are initiated via the LOCK method, which creates a new lock or refreshes an existing one on the specified resource. The request body includes an XML element specifying the lock scope, type (typically write), owner, and timeout, such as<timeout>Second-3600</timeout> to indicate a 3600-second duration. To refresh a lock, a client submits a LOCK request including an If header with the existing lock token. The UNLOCK method removes a lock, requiring the client to provide the lock token in the Lock-Token request header for verification.
Lock semantics revolve around opaque lock tokens, which are unique identifiers returned by the server upon successful lock creation, formatted as URLs using the "opaquelocktoken" scheme (e.g., opaquelocktoken:df9e8e0a-8d6f-11d0-b3b2-00c04fd430c8). These tokens must be included in subsequent requests via the If header to demonstrate ownership and avoid conflicts. Lock discovery is facilitated through the PROPFIND method querying the DAV:lockdiscovery property, which returns an XML response detailing active locks, including their tokens, scopes, depths, and timeouts for the resource and its descendants.
Despite these features, locking in WebDAV is not mandatory in the core specification; servers are permitted to omit support entirely, and when implemented, it often functions as advisory rather than strictly enforced, relying on client compliance to check and honor locks via the If header. This optional nature allows flexibility but can lead to inconsistencies in multi-client scenarios if not all participants adhere to the protocol.
Extensions and Variants
Standard Extensions
Web Distributed Authoring and Versioning (WebDAV) has been extended through several IETF standards-track RFCs that add modular functionality to the core protocol without defining entirely new protocols. These extensions enhance capabilities such as collection management, access control, searching, and resource binding, enabling more sophisticated collaborative authoring scenarios.[1] One key extension is the WebDAV Ordered Collections Protocol, defined in RFC 3648, which introduces server-side support for maintaining a persistent ordering of members within collections. This allows clients to specify and modify the order of resources in a collection using the ORDERPATCH method, which updates the ordering via an XML body containing position information relative to other members. Servers indicate support for this extension through the "ordered-collections" compliance class in OPTIONS responses, and it builds on the core WebDAV MKCOL and PROPFIND methods to ensure ordered listings are returned consistently.[5] Access control is addressed by the WebDAV Access Control Protocol in RFC 3744, which defines a framework for managing permissions on resources through access control lists (ACLs). Principals, represented by URIs such as <D:principal> elements, are assigned privileges like "all" (encompassing all operations), "read" (for retrieval), and "write" (for modifications), using the ACL property and methods such as ACL (to set permissions) and PRINCIPAL-PROPERTY-SEARCH (to discover applicable principals). This extension integrates with core WebDAV properties and reports, allowing fine-grained control over who can execute methods like GET, PUT, or DELETE on specific resources.[28] For searching resources based on properties, WebDAV SEARCH, specified in RFC 5323 (formerly known as DASL), provides a standardized mechanism for property-based queries across collections. Clients use the SEARCH method with an XML query schema, supporting basic and advanced searches (e.g., via theDerivative Protocols
Derivative protocols build upon WebDAV's foundational extensions to HTTP, tailoring the protocol for specialized applications such as calendaring, contacts management, and search functionalities. These derivatives leverage WebDAV's resource properties, methods, and locking mechanisms to address domain-specific needs while maintaining compatibility with the core protocol.[1] CalDAV, defined in RFC 4791 published in 2007, extends WebDAV to support calendar and scheduling operations. It integrates iCalendar (iCal) data into WebDAV resource properties, enabling clients to store, retrieve, and manipulate calendar events, tasks, and free-busy information. Key additions include the REPORT method with calendar-specific query schemas for operations like free-busy lookups and time-range filtering, allowing efficient synchronization of scheduling data across devices.[30] CalDAV has seen widespread adoption, powering services such as Apple iCloud for calendar synchronization and Google Workspace Calendar, which provides a CalDAV interface for third-party clients to access and manage calendar resources.[31][32] CardDAV, specified in RFC 6352 from 2011, derives from WebDAV to facilitate the management of contacts and address books using the vCard format. It stores contact information as structured properties on WebDAV resources, supporting operations for creating, updating, and querying address book entries. Notable features include the addressbook-multi-get method for batch retrieval of multiple contacts and query mechanisms to filter by attributes like name or email.[33] This protocol is extensively implemented in major platforms, including Apple iCloud for contacts syncing and Google Contacts, which exposes a CardDAV endpoint for client applications to handle contact data.[34][35] Other WebDAV derivatives include efforts in search capabilities, such as DAV Searching and Locating (DASL), an early proposal for querying WebDAV repositories using extensible grammars over HTTP. DASL, outlined in draft specifications, aimed to enable basic and advanced searches but achieved only limited adoption due to incomplete standardization and competition from later mechanisms like WebDAV SEARCH (RFC 5323).[36]Vendor-Specific Implementations
Microsoft has implemented several proprietary extensions to the WebDAV protocol to enhance integration with Windows file system clients and Microsoft Office applications. The Web Folders feature in Windows allows users to map WebDAV resources as network drives in Explorer, leveraging custom properties stored in IIS to support client-specific behaviors such as property persistence across sessions.[37] These custom properties, often in namespaces likems:, enable seamless Office document editing by embedding metadata for versioning and collaboration, using PROPPATCH requests tailored for Windows environments to update document-specific attributes without disrupting standard WebDAV compliance.[38] Additionally, the [MS-WDV] specification introduces client-side headers like FileAttributes and Translate-F to optimize file type handling and reduce unnecessary translations, improving performance for Windows-specific interactions.[38]
Apple's implementation of WebDAV primarily focuses on Finder integration for mounting remote resources as local volumes, but it includes behavioral extensions for macOS file system compatibility. The macOS WebDAV client uses standard HTTP extensions with custom handling for temporary file creation and locking to mimic native file operations, though it generates additional PROPFIND requests for metadata retrieval during mounts.[39] While no explicit custom property namespaces like Microsoft's are documented, Finder's search functionality over WebDAV volumes relies on standard DAV: properties with macOS-specific filtering for attributes such as creation dates and tags, ensuring interoperability while prioritizing user experience in mounted shares.[13]
Other vendors have introduced tailored features to address specific use cases. Apache's mod_dav module supports custom authentication through integration with Apache's core auth providers, such as mod_authz_core for role-based access and mod_auth_basic for credential handling, allowing administrators to extend WebDAV with non-standard security modules without altering the core protocol.[40] In Salesforce B2C Commerce, the WebDAV API enforces upload limits of 500 MB per push to manage resource constraints in cloud environments, alongside authentication tied to merchant credentials for secure file transfers in e-commerce pipelines.[41]
Vendor-specific implementations often lead to interoperability challenges due to reliance on non-standard properties, which can create lock-in effects. For instance, Microsoft's Exchange-defined properties, while functional across some third-party servers, are not part of the core RFC 2518 or 4918 specifications, potentially causing failures in PROPPATCH or PROPFIND operations on compliant but non-Microsoft servers.[42] RFC 4918 errata address related issues, such as simplifying lock-null resource handling to reduce complexity from vendor variations, but non-standard extensions persist as a source of fragmentation in multi-vendor environments.[43]
Implementation and Software
Client Applications
WebDAV client applications enable users to interact with remote resources for file management and collaboration, supporting operations like uploading, downloading, editing, and locking files over HTTP/HTTPS. These tools integrate WebDAV's extensions to HTTP, such as PROPFIND for directory listing and PUT for uploads, allowing seamless access to WebDAV-enabled servers.[44]Desktop Clients
On Windows, Microsoft Explorer provides native support for WebDAV through its Web Folders feature, which maps remote WebDAV locations as network drives for drag-and-drop file operations and direct editing. Users can connect by entering a WebDAV URL in the address bar or via the "Map Network Drive" option, enabling integration with local file workflows.[7] However, as of 2025, compatibility issues with newer Windows versions may require enabling the WebClient service or using alternative clients for optimal performance.[45] macOS Finder offers built-in WebDAV connectivity via the "Connect to Server" menu, where users specify adav:// or davs:// URL to mount the remote folder as a local volume for browsing and modifying files. This allows real-time collaboration on documents stored on WebDAV servers, with support for authentication methods like Basic and Digest.[13]
For Linux distributions, command-line tools like Cadaver provide a text-based interface for WebDAV interactions, supporting commands for listing, uploading, and namespace operations on remote resources. Graphical environments, such as GNOME's Nautilus file manager, leverage GVFS (GNOME Virtual File System) to connect to WebDAV servers using the "Connect to Server" dialog with dav:// protocols, facilitating file management similar to local disks.[46][47]