[MS-WDV]:

Web Distributed Authoring and Versioning (WebDAV) Protocol: Client Extensions

Intellectual Property Rights Notice for Open Specifications Documentation

Technical Documentation. Microsoft publishes Open Specifications documentation for protocols, file formats, languages, standards as well as overviews of the interaction among each of these technologies.

Copyrights. This documentation is covered by Microsoft copyrights. Regardless of any other terms that are contained in the terms of use for the Microsoft website that hosts this documentation, you may make copies of it in order to develop implementations of the technologies described in the Open Specifications and may distribute portions of it in your implementations using these technologies or your documentation as necessary to properly document the implementation. You may also distribute in your implementation, with or without modification, any schema, IDL's, or code samples that are included in the documentation. This permission also applies to any documents that are referenced in the Open Specifications.

No Trade Secrets. Microsoft does not claim any trade secret rights in this documentation.

Patents. Microsoft has patents that may cover your implementations of the technologies described in the Open Specifications. Neither this notice nor Microsoft's delivery of the documentation grants any licenses under those or any other Microsoft patents. However, a given Open Specification may be covered by Microsoft Open Specification Promise or the Community Promise. If you would prefer a written license, or if the technologies described in the Open Specifications are not covered by the Open Specifications Promise or Community Promise, as applicable, patent licenses are available by contacting .

Trademarks. The names of companies and products contained in this documentation may be covered by trademarks or similar intellectual property rights. This notice does not grant any licenses under those rights. For a list of Microsoft trademarks, visit

Fictitious Names. The example companies, organizations, products, domain names, e-mail addresses, logos, people, places, and events depicted in this documentation are fictitious. No association with any real company, organization, product, domain name, email address, logo, person, place, or event is intended or should be inferred.

Reservation of Rights. All other rights are reserved, and this notice does not grant any rights other than specifically described above, whether by implication, estoppel, or otherwise.

Tools. The Open Specifications do not require the use of Microsoft programming tools or programming environments in order for you to develop an implementation. If you have access to Microsoft programming tools and environments you are free to take advantage of them. Certain Open Specifications are intended for use in conjunction with publicly available standard specifications and network programming art, and assumes that the reader either is familiar with the aforementioned material or has immediate access to it.

Revision Summary

Date / Revision History / Revision Class / Comments
3/2/2007 / 1.0 / Version 1.0 release
4/3/2007 / 1.1 / Version 1.1 release
5/11/2007 / 1.2 / Version 1.2 release
7/3/2007 / 2.0 / Major / Added sections; changed to unified format
8/10/2007 / 2.0.1 / Editorial / Changed language and formatting in the technical content.
9/28/2007 / 2.0.2 / Editorial / Changed language and formatting in the technical content.
10/23/2007 / 2.0.3 / Editorial / Changed language and formatting in the technical content.
1/25/2008 / 2.0.4 / Editorial / Changed language and formatting in the technical content.
3/14/2008 / 3.0 / Major / Updated and revised the technical content.
6/20/2008 / 4.0 / Major / Updated and revised the technical content.
7/25/2008 / 4.0.1 / Editorial / Changed language and formatting in the technical content.
8/29/2008 / 5.0 / Major / Updated and revised the technical content.
10/24/2008 / 6.0 / Major / Updated and revised the technical content.
12/5/2008 / 6.0.1 / Editorial / Changed language and formatting in the technical content.
1/16/2009 / 6.0.2 / Editorial / Changed language and formatting in the technical content.
2/27/2009 / 7.0 / Major / Updated and revised the technical content.
4/10/2009 / 7.0.1 / Editorial / Changed language and formatting in the technical content.
5/22/2009 / 8.0 / Major / Updated and revised the technical content.
7/2/2009 / 8.0.1 / Editorial / Changed language and formatting in the technical content.
8/14/2009 / 8.0.2 / Editorial / Changed language and formatting in the technical content.
9/25/2009 / 8.1 / Minor / Clarified the meaning of the technical content.
11/6/2009 / 8.1.1 / Editorial / Changed language and formatting in the technical content.
12/18/2009 / 9.0 / Major / Updated and revised the technical content.
1/29/2010 / 9.0.1 / Editorial / Changed language and formatting in the technical content.
3/12/2010 / 9.0.2 / Editorial / Changed language and formatting in the technical content.
4/23/2010 / 9.0.3 / Editorial / Changed language and formatting in the technical content.
6/4/2010 / 9.0.4 / Editorial / Changed language and formatting in the technical content.
7/16/2010 / 10.0 / Major / Updated and revised the technical content.
8/27/2010 / 11.0 / Major / Updated and revised the technical content.
10/8/2010 / 11.0 / None / No changes to the meaning, language, or formatting of the technical content.
11/19/2010 / 11.0 / None / No changes to the meaning, language, or formatting of the technical content.
1/7/2011 / 11.0 / None / No changes to the meaning, language, or formatting of the technical content.
2/11/2011 / 11.0 / None / No changes to the meaning, language, or formatting of the technical content.
3/25/2011 / 11.0 / None / No changes to the meaning, language, or formatting of the technical content.
5/6/2011 / 11.0 / None / No changes to the meaning, language, or formatting of the technical content.
6/17/2011 / 11.1 / Minor / Clarified the meaning of the technical content.
9/23/2011 / 12.0 / Major / Updated and revised the technical content.
12/16/2011 / 13.0 / Major / Updated and revised the technical content.
3/30/2012 / 13.0 / None / No changes to the meaning, language, or formatting of the technical content.
7/12/2012 / 14.0 / Major / Updated and revised the technical content.
10/25/2012 / 14.0 / None / No changes to the meaning, language, or formatting of the technical content.
1/31/2013 / 14.0 / None / No changes to the meaning, language, or formatting of the technical content.
8/8/2013 / 15.0 / Major / Updated and revised the technical content.
11/14/2013 / 15.0 / None / No changes to the meaning, language, or formatting of the technical content.
2/13/2014 / 15.0 / None / No changes to the meaning, language, or formatting of the technical content.
5/15/2014 / 15.0 / None / No changes to the meaning, language, or formatting of the technical content.
6/30/2015 / 16.0 / Major / Significantly changed the technical content.
10/16/2015 / 16.0 / No Change / No changes to the meaning, language, or formatting of the technical content.

Table of Contents

1Introduction

1.1Glossary

1.2References

1.2.1Normative References

1.2.2Informative References

1.3Overview

1.4Relationship to Other Protocols

1.5Prerequisites/Preconditions

1.6Applicability Statement

1.7Versioning and Capability Negotiation

1.8Vendor-Extensible Fields

1.9Standards Assignments

2Messages

2.1Transport

2.2Message Syntax

2.2.1WebDAV Extension Header

2.2.2Translate Header

2.2.3Extended Error Handling

2.2.4Lock Headers

2.2.4.1Lock Time-out Header

2.2.4.2Lock-Token Header

2.2.5Multipart Content Type

2.2.6449 Retry With Status Code

2.2.7Ms-Echo-Request Header

2.2.8Ms-Echo-Reply Header

3Protocol Details

3.1WebDAV Client Details

3.1.1Abstract Data Model

3.1.2Timers

3.1.3Initialization

3.1.4Higher-Layer Triggered Events

3.1.5Processing Events and Sequencing Rules

3.1.5.1WebDAV Extension Header

3.1.5.1.1Extensions to GET and POST

3.1.5.1.2Extensions to PUT

3.1.5.2Translate Header

3.1.5.3Extended Errors

3.1.5.4Adding Lock Headers to Existing Commands

3.1.5.5Retrying a Request with the 449 Status Code

3.1.6Timer Events

3.1.7Other Local Events

3.2WebDAV Server Details

3.2.1Abstract Data Model

3.2.2Timers

3.2.3Initialization

3.2.4Higher-Layer Triggered Events

3.2.5Processing Events and Sequencing Rules

3.2.5.1Translate Header

3.2.5.2Adding Lock Headers to Existing Commands

3.2.5.3Extended Errors

3.2.5.4Extensions to GET and POST

3.2.5.5Extensions to PUT

3.2.5.6Retrying a Request with the 449 Status Code

3.2.6Timer Events

3.2.7Other Local Events

4Protocol Examples

4.1Translate Header

4.2Extended Error Information

4.3Example Command Combinations

4.4Example OPTIONS Command

4.5Example PUT + PROPPATCH + LOCK command

4.6Multipart Content Type

4.7449 Response and Echo Reply

5Security

5.1Security Considerations for Implementers

5.1.1Data Security Using File Encryption

5.2Index of Security Parameters

6Appendix A: Product Behavior

7Change Tracking

8Index

1Introduction

The HTTP Extensions for Distributed Authoring—WEBDAV Protocol (WebDAV), as specified in [RFC4918], extends the standard Hypertext Transfer Protocol (HTTP) mechanisms that are specified in [RFC2616] to provide file access and content management over the Internet. The WebDAV Protocol enables an Internet-based file system. However, some types of files—for example, files with programmatically-derived content—are not easily managed by WebDAV Protocol. Also, some protocol interactions—for example, the separation of properties and content—are less than optimal for file system usage.

The client extensions in this specification, Web Distributed Authoring and Versioning (WebDAV) Protocol: Client Extensions, extend the WebDAV Protocol, as specified in [RFC4918], by introducing new headers that both enable the file types that are not currently manageable and optimize protocol interactions for file system clients. These WebDAV Protocol: Client Extensions do not introduce new functionality into the WebDAV Protocol, but instead optimize processing and eliminate the need for special-case processing.

Sections 1.8, 2, and 3 of this specification are normative and can contain the terms MAY, SHOULD, MUST, MUST NOT, and SHOULD NOT as defined in [RFC2119]. Sections 1.5 and 1.9 are also normative but do not contain those terms. All other sections and examples in this specification are informative.

1.1Glossary

The following terms are specific to this document:

entity: Any document on a server that is accessible by using a Hypertext Transfer Protocol (HTTP) URL.

file browsing: A process of viewing or searching document collections.

Hypertext Transfer Protocol (HTTP): An application-level protocol for distributed, collaborative, hypermedia information systems (text, graphic images, sound, video, and other multimedia files) on the World Wide Web.

Hypertext Transfer Protocol Secure (HTTPS): An extension of HTTP that securely encrypts and decrypts web page requests. In some older protocols, “Hypertext Transfer Protocol over Secure Sockets Layer” is still used (Secure Sockets Layer has been deprecated). For more information, see [SSL3] and [RFC5246].

locking: A mechanism that is used for overwrite protection. Locking may be applied to individual resources or to entire collection hierarchies. This term is used as specified in [RFC4918] sections 6 and 7.

property: A name/value pair that associates metadata with a resource. This term is used as specified in [RFC4918] section 4.

resource: An entity that can be identified by a URI. This term is used as specified in [RFC2616] section 1.3.

Secure Sockets Layer (SSL): A security protocol that supports confidentiality and integrity of messages in client and server applications that communicate over open networks. SSL uses two keys to encrypt data-a public key known to everyone and a private or secret key known only to the recipient of the message. SSL supports server and, optionally, client authentication (2) using X.509 certificates (2). For more information, see [X509]. The SSL protocol is precursor to Transport Layer Security (TLS). The TLS version 1.0 specification is based on SSL version 3.0 [SSL3].

thicket: A means of storing a complex HTML document with its related files. It consists of a thicket main file and a hidden thicket folder that contains a thicket manifest and a set of thicket supporting files that, together, store the referenced content of the document.

Transport Layer Security (TLS): A security protocol that supports confidentiality and integrity of messages in client and server applications communicating over open networks. TLS supports server and, optionally, client authentication by using X.509 certificates (as specified in [X509]). TLS is standardized in the IETF TLS working group. See [RFC4346].

Web Distributed Authoring and Versioning Protocol (WebDAV): The Web Distributed Authoring and Versioning Protocol, as described in [RFC2518] or [RFC4918].

web server: A server computer that hosts websites and responds to requests from applications.

WebDAV client: A computer that uses WebDAV, as described in [RFC2518] or [RFC4918], to retrieve data from a WebDAV server.

WebDAV server: A computer that supports WebDAV, as described in [RFC2518] or [RFC4918], and responds to requests from WebDAV clients.

MAY, SHOULD, MUST, SHOULD NOT, MUST NOT: These terms (in all caps) are used as defined in [RFC2119]. All statements of optional behavior use either MAY, SHOULD, or SHOULD NOT.

1.2References

Links to a document in the Microsoft Open Specifications library point to the correct section in the most recently published version of the referenced document. However, because individual documents in the library are not updated at the same time, the section numbers in the documents may not match. You can confirm the correct section numbering by checking the Errata.

1.2.1Normative References

We conduct frequent surveys of the normative references to assure their continued availability. If you have any issue with finding a normative reference, please contact . We will assist you in finding the relevant information.

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997,

[RFC2246] Dierks, T., and Allen, C., "The TLS Protocol Version 1.0", RFC 2246, January 1999,

[RFC2616] Fielding, R., Gettys, J., Mogul, J., et al., "Hypertext Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999,

[RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000,

[RFC3986] Berners-Lee, T., Fielding, R., and Masinter, L., "Uniform Resource Identifier (URI): Generic Syntax", STD 66, RFC 3986, January 2005,

[RFC4918] Dusseault, L, Ed., "HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)", RFC 4918, June 2007,

1.2.2Informative References

[MSASP] Microsoft Corporation, "Active Server Pages",

[MSDN-STC] Microsoft Corporation, "Storage Technologies Collection", March 2003,

1.3Overview

The WebDAV Protocol is a set of methods, headers, and content-types that extend the Hypertext Transfer Protocol -- HTTP/1.1, as specified in [RFC2616]. The WebDAV Protocol allows data to be written to Internet servers and is an Internet standard for collaborative authoring, as specified in [RFC4918].

The WebDAV Protocol expands the basic support in HTTP/1.1 for content authoring by introducing additional methods and headers that provide support for resourceproperties and other base functions, such as resource locking. These new capabilities make the WebDAV Protocol suitable for basic remotely mountable file systems.

WebDAV Protocol: Client Extensions specifies the following extensions to the base WebDAV Protocol:

A mechanism, which is based on the WebDAV Protocol and HTTP/1.1, to indicate support for the extensions that are covered in this document.

A header to indicate if an entity is to be returned as is or if any associated programmatic processing should be performed and the result returned.

An extension that provides a way to GET and PUT properties along with entity content, offering more efficient file browsing.

A header that enables the bundling of locking information by using GET, PUT, and POST commands to improve the efficiency of locking semantics.

WebDAV Protocol: Client Extensions also specifies the following extension to the base HTTP protocol:

A mechanism for an HTTP request to be retried using the HTTP 449 status code extension.

1.4Relationship to Other Protocols

WebDAV Protocol: Client Extensions rely on the HTTP Extensions for Distributed Authoring—WEBDAV, as specified in [RFC4918], which in turn relies on HTTP/1.1, as specified in [RFC2616]. WebDAV Protocol: Client Extensions also rely on the Hypertext Transfer Protocol over Secure Sockets Layer (HTTPS), as specified in HTTP Over TLS, [RFC2818], for data protection services.

1.5Prerequisites/Preconditions

WebDAV Protocol: Client Extensions require a WebDAV server, as specified in [RFC4918], that supports the OPTIONS command.

This specification also requires that WebDAV clients have URLs that point to WebDAV servers.

1.6Applicability Statement

This protocol is applicable in scenarios that require efficient file operations. Note that this document specifies only those extensions that are needed to enable efficient file system clients. These extensions do not add any additional functionality. Instead, they help reduce the network traffic and increase the performance of clients that use the WebDAV Protocol, as specified in [RFC4918].

1.7Versioning and Capability Negotiation

This document introduces no new versioning mechanisms except those that already exist in the WebDAV Protocol and HTTP/1.1.

Negotiation of the WebDAV Protocol and of HTTP/1.1 options in general is specified in [RFC4918] and [RFC2616], respectively. The X-MSDAVEXT header is used as part of the HTTP/1.1 OPTIONS discovery mechanism to indicate WebDAV server support for this specification.

1.8Vendor-Extensible Fields

The extensions that are defined in this protocol can be extended in constrained ways, as specified in section 2.2.3.

1.9Standards Assignments

No standards body has approved or governs this document or its header names and values. This specification conforms to the form and behavior of other custom HTTP headers, as specified in [RFC2616] section 4.2.

2Messages

2.1Transport

Messages are transported by using HTTP, as specified in [RFC4918] and [RFC2616].

This protocol MAY be used with Secure Sockets Layer (SSL) or Transport Layer Security (TLS), as specified in [RFC2246].<1>

Port 80 is the standard port assignment for HTTP, and port 443 is the standard port assignment for HTTP over SSL or TLS. However, individual implementations MAY support other ports.<2>

2.2Message Syntax

The extension headers in this protocol conform to the form and behavior of other custom HTTP headers, as specified in [RFC2616] section 4.2. They are consistent with the WebDAV Protocol verbs and headers, as specified in [RFC4918] sections 8 and 9.

The following header extensions are specified in this section:

The X-MSDAVEXT response header has been added to the OPTIONS response and indicates support for the extensions that are covered in this document, as specified in section 2.2.1.

The Translate request header allows the client to request the source of an entity, as specified in section 2.2.2.

The X-MSDAVEXT_ERROR response header provides a mechanism for extended error handling, as specified in section 2.2.3.

The X-MSDAVEXTLockTimeout request/response header enables bundling of LOCK information (as specified in [RFC4918] section 8.10) with GET, PUT, and POST messages, as specified in section 2.2.4.1.

The Lock-Token request/response header enables bundling of LOCK information with GET, PUT, and POST messages, as specified in section 2.2.4.2.

The Ms-Echo-Request header is sent by the server when returning a 449 Retry With status, as specified in section 2.2.7.

The Ms-Echo-Reply header is sent by the client when making a request in response to a 449 Retry With status, as specified in section 2.2.8.

The following new content type is specified in this extension:

The Multipart/MSDAVEXTPrefixEncoded content type allows entity properties and entity content to be bundled in a single message, as specified in section 2.2.5.

The following new status code is specified in this extension:

The 449 Retry With status code allows the server to indicate that the request did not contain sufficient information and should be retried by the client, as specified in section 2.2.6.

2.2.1WebDAV Extension Header

The X-MSDAVEXT header has been added to indicate support for the WebDAV Protocol: Client Extensions and to request optional server behavior.

This new header is defined as follows (using the Augmented Backus-Naur Form (ABNF) Syntax as specified in [RFC2616] section 2.1):<3>

MS-WebDAV Extension Header = "X-MSDAVEXT" ":" Ext-options