mirror of
https://github.com/nextcloud/android.git
synced 2024-12-22 16:54:33 +03:00
718 lines
400 KiB
HTML
718 lines
400 KiB
HTML
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
|||
|
<!-- saved from url=(0040)http://www.webdav.org/specs/rfc2518.html -->
|
|||
|
<html lang="en"><head profile="http://www.w3.org/2006/03/hcard"><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>HTTP Extensions for Distributed Authoring -- WEBDAV</title><style type="text/css" title="Xml2Rfc (sans serif)">a{text-decoration:none;}a:hover{text-decoration:underline;}a:active{text-decoration:underline;}address{margin-top:1em;margin-left:2em;font-style:normal;}body{color:#000000;font-family:verdana,helvetica,arial,sans-serif;font-size:10pt;}cite{font-style:normal;}dd{margin-right:2em;}dl{margin-left:2em;}dl.empty dd{margin-top:.5em;}dl p{margin-left:0em;}dt{margin-top:.5em;}h1{color:#333333;font-size:14pt;line-height:21pt;page-break-after:avoid;}h1.np{page-break-before:always;}h1 a{color:#333333;}h2{color:#000000;font-size:12pt;line-height:15pt;page-break-after:avoid;}h2 a{color:#000000;}h3{color:#000000;font-size:10pt;page-break-after:avoid;}h3 a{color:#000000;}h4{color:#000000;font-size:10pt;page-break-after:avoid;}h4 a{color:#000000;}h5{color:#000000;font-size:10pt;page-break-after:avoid;}h5 a{color:#000000;}img{margin-left:3em;}li{margin-left:2em;margin-right:2em;}ol{margin-left:2em;margin-right:2em;}ol p{margin-left:0em;}p{margin-left:2em;margin-right:2em;}pre{margin-left:3em;background-color:lightyellow;padding:.25em;}pre.text2{border-style:dotted;border-width:1px;background-color:#f0f0f0;width:69em;}pre.inline{background-color:white;padding:0em;}pre.text{border-style:dotted;border-width:1px;background-color:#f8f8f8;width:69em;}pre.drawing{border-style:solid;border-width:1px;background-color:#f8f8f8;padding:2em;}table{margin-left:2em;}table.tt{ vertical-align:top;}table.full{border-style:outset;border-width:1px;}table.headers{border-style:outset;border-width:1px;}table.tt td{vertical-align:top;}table.full td{border-style:inset;border-width:1px;}table.tt th{vertical-align:top;}table.full th{border-style:inset;border-width:1px;}table.headers th{border-style:none none inset none;border-width:1px;}table.header{width:95%;font-size:10pt;color:white;}td.top{vertical-align:top;}td.topnowrap{vertical-align:top;white-space:nowrap;}td.header{background-color:gray;width:50%;}td.reference{vertical-align:top;white-space:nowrap;padding-right:1em;}thead{display:table-header-group;}ul.toc{list-style:none;margin-left:1.5em;margin-right:0em;padding-left:0em;}li.tocline0{line-height:150%;font-weight:bold;font-size:10pt;margin-left:0em;margin-right:0em;}li.tocline1{line-height:normal;font-weight:normal;font-size:9pt;margin-left:0em;margin-right:0em;}li.tocline2{font-size:0pt;}ul p{margin-left:0em;}ul.ind{list-style:none;margin-left:1.5em;margin-right:0em;padding-left:0em;}li.indline0{font-weight:bold;line-height:200%;margin-left:0em;margin-right:0em;}li.indline1{font-weight:normal;line-height:150%;margin-left:0em;margin-right:0em;}.bcp14{font-style:normal;text-transform:lowercase;font-variant:small-caps;}.comment{background-color:yellow;}.center{text-align:center;}.error{color:red;font-style:italic;font-weight:bold;}.figure{font-weight:bold;text-align:center;font-size:9pt;}.filename{color:#333333;font-weight:bold;font-size:12pt;line-height:21pt;text-align:center;}.fn{font-weight:bold;}.hidden{display:none;}.left{text-align:left;}.right{text-align:right;}.title{ color:#990000;font-size:18pt;line-height:18pt;font-weight:bold;text-align:center;margin-top:36pt;}.vcardline{display:block;}.warning{font-size:14pt;background-color:yellow;}@media print{.noprint{display:none;}a{color:black;text-decoration:none;}table.header{width:90%;}td.header{width:50%;color:black;background-color:white;vertical-align:top;font-size:12pt;}ul.toc a::after{content:leader('.') target-counter(attr(href),page);}a.iref{content:target-counter(attr(href),page);}.print2col{column-count:2;-moz-column-count:2;column-fill:auto;}}@page{@top-left{content:"RFC 2518";}@top-right{content:"February 1999";}@top-center{content:"WEBDAV";}@bottom-left{content:"Goland, et al.";}@bottom-center{content:"Standards Track";}@bottom-right{content:"[Page "counter(page)"]";}}@page:first{@top-left{content:normal;}@top-right{content:normal;}@top-cen
|
|||
|
Host: www.ics.uci.edu
|
|||
|
Destination: http://www.ics.uci.edu/users/f/fielding/index.html
|
|||
|
If: <http://www.ics.uci.edu/users/f/fielding/index.html>
|
|||
|
(<opaquelocktoken:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>)
|
|||
|
</pre><div id="rfc.figure.u.2"></div><p>>>Response</p><pre class="text"> HTTP/1.1 204 No Content
|
|||
|
</pre><p id="rfc.section.7.6.1.p.3">In this example, even though both the source and destination are locked, only one lock token must be submitted, for the lock on the destination. This is because the source resource is not modified by a COPY, and hence unaffected by the write lock. In this example, user agent authentication has previously occurred via a mechanism outside the scope of the HTTP protocol, in the underlying transport layer.</p><h2 id="rfc.section.7.7"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.7.7">7.7</a> Write Locks and COPY/MOVE</h2><p id="rfc.section.7.7.p.1">A COPY method invocation <em class="bcp14">MUST NOT</em> duplicate any write locks active on the source. However, as previously noted, if the COPY copies the resource into a collection that is locked with "Depth: infinity", then the resource will be added to the lock.</p><p id="rfc.section.7.7.p.2">A successful MOVE request on a write locked resource <em class="bcp14">MUST NOT</em> move the write lock with the resource. However, the resource is subject to being added to an existing lock at the destination, as specified in <a href="http://www.webdav.org/specs/rfc2518.html#write.locks.and.collections" title="Write Locks and Collections">Section 7.5</a>. For example, if the MOVE makes the resource a child of a collection that is locked with "Depth: infinity", then the resource will be added to that collection's lock. Additionally, if a resource locked with "Depth: infinity" is moved to a destination that is within the scope of the same lock (e.g., within the namespace tree covered by the lock), the moved resource will again be a added to the lock. In both these examples, as specified in <a href="http://www.webdav.org/specs/rfc2518.html#write.locks.and.the.if.request.header" title="Write Locks and the If Request Header">Section 7.6</a>, an If header must be submitted containing a lock token for both the source and destination.</p><h2 id="rfc.section.7.8"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.7.8">7.8</a> Refreshing Write Locks</h2><p id="rfc.section.7.8.p.1">A client <em class="bcp14">MUST NOT</em> submit the same write lock request twice. Note that a client is always aware it is resubmitting the same lock request because it must include the lock token in the If header in order to make the request for a resource that is already locked.</p><p id="rfc.section.7.8.p.2">However, a client may submit a LOCK method with an If header but without a body. This form of LOCK <em class="bcp14">MUST</em> only be used to "refresh" a lock. Meaning, at minimum, that any timers associated with the lock <em class="bcp14">MUST</em> be re-set.</p><p id="rfc.section.7.8.p.3">A server may return a Timeout header with a lock refresh that is different than the Timeout header returned when the lock was originally requested. Additionally clients may submit Timeout headers of arbitrary value with their lock refresh requests. Servers, as always, may ignore Timeout headers submitted by the client.</p><p id="rfc.section.7.8.p.4">If an error is received in response to a refresh LOCK request the client <em class="bcp14">SHOULD</em> assume that the lock was not refreshed.</p><h1 id="rfc.section.8"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8">8.</a> <a id="http.methods.for.distributed.authoring" href="http://www.webdav.org/specs/rfc2518.html#http.methods.for.distributed.authoring">HTTP Methods for Distributed Authoring</a></h1><p id="rfc.section.8.p.1">The following new HTTP methods use XML as a request and response format. All DAV compliant clients and resources <em class="bcp14">MUST</em> use XML parsers that are compliant with <a href="http://www.webdav.org/specs/rfc2518.html#REC-XML" id="rfc.xref.REC-XML.2"><cite title="Extensible Markup Language (XML) 1.0">[REC-XML]</cite></a>. All XML used in either requests or responses <em class="bcp14">MUST</em> be, at minimum, well formed. If a server receives ill-formed XML in a request it <em class="bcp14">MUST</em> reject the entire request with a 400 (
|
|||
|
Host: www.foo.bar
|
|||
|
Content-type: text/xml; charset="utf-8"
|
|||
|
Content-Length: xxxx
|
|||
|
|
|||
|
<?xml version="1.0" encoding="utf-8" ?>
|
|||
|
<D:propfind xmlns:D="DAV:">
|
|||
|
<D:prop xmlns:R="http://www.foo.bar/boxschema/">
|
|||
|
<R:bigbox/>
|
|||
|
<R:author/>
|
|||
|
<R:DingALing/>
|
|||
|
<R:Random/>
|
|||
|
</D:prop>
|
|||
|
</D:propfind>
|
|||
|
</pre><div id="rfc.figure.u.4"></div><p>>>Response</p><pre class="text"> HTTP/1.1 207 Multi-Status
|
|||
|
Content-Type: text/xml; charset="utf-8"
|
|||
|
Content-Length: xxxx
|
|||
|
|
|||
|
<?xml version="1.0" encoding="utf-8" ?>
|
|||
|
<D:multistatus xmlns:D="DAV:">
|
|||
|
<D:response>
|
|||
|
<D:href>http://www.foo.bar/file</D:href>
|
|||
|
<D:propstat>
|
|||
|
<D:prop xmlns:R="http://www.foo.bar/boxschema/">
|
|||
|
<R:bigbox>
|
|||
|
<R:BoxType>Box type A</R:BoxType>
|
|||
|
</R:bigbox>
|
|||
|
<R:author>
|
|||
|
<R:Name>J.J. Johnson</R:Name>
|
|||
|
</R:author>
|
|||
|
</D:prop>
|
|||
|
<D:status>HTTP/1.1 200 OK</D:status>
|
|||
|
</D:propstat>
|
|||
|
<D:propstat>
|
|||
|
<D:prop><R:DingALing/><R:Random/></D:prop>
|
|||
|
<D:status>HTTP/1.1 403 Forbidden</D:status>
|
|||
|
<D:responsedescription> The user does not have access to
|
|||
|
the DingALing property.
|
|||
|
</D:responsedescription>
|
|||
|
</D:propstat>
|
|||
|
</D:response>
|
|||
|
<D:responsedescription> There has been an access violation error.
|
|||
|
</D:responsedescription>
|
|||
|
</D:multistatus>
|
|||
|
</pre><p id="rfc.section.8.1.1.p.3">In this example, PROPFIND is executed on a non-collection resource http://www.foo.bar/file. The propfind XML element specifies the name of four properties whose values are being requested. In this case only two properties were returned, since the principal issuing the request did not have sufficient access rights to see the third and fourth properties.</p><h3 id="rfc.section.8.1.2"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.1.2">8.1.2</a> Example - Using allprop to Retrieve All Properties</h3><div id="rfc.figure.u.5"></div><p>>>Request</p><pre class="text2"> PROPFIND /container/ HTTP/1.1
|
|||
|
Host: www.foo.bar
|
|||
|
Depth: 1
|
|||
|
Content-Type: text/xml; charset="utf-8"
|
|||
|
Content-Length: xxxx
|
|||
|
|
|||
|
<?xml version="1.0" encoding="utf-8" ?>
|
|||
|
<D:propfind xmlns:D="DAV:">
|
|||
|
<D:allprop/>
|
|||
|
</D:propfind>
|
|||
|
</pre><div id="rfc.figure.u.6"></div><p>>>Response</p><pre class="text"> HTTP/1.1 207 Multi-Status
|
|||
|
Content-Type: text/xml; charset="utf-8"
|
|||
|
Content-Length: xxxx
|
|||
|
|
|||
|
<?xml version="1.0" encoding="utf-8" ?>
|
|||
|
<D:multistatus xmlns:D="DAV:">
|
|||
|
<D:response>
|
|||
|
<D:href>http://www.foo.bar/container/</D:href>
|
|||
|
<D:propstat>
|
|||
|
<D:prop xmlns:R="http://www.foo.bar/boxschema/">
|
|||
|
<R:bigbox>
|
|||
|
<R:BoxType>Box type A</R:BoxType>
|
|||
|
</R:bigbox>
|
|||
|
<R:author>
|
|||
|
<R:Name>Hadrian</R:Name>
|
|||
|
</R:author>
|
|||
|
<D:creationdate>
|
|||
|
1997-12-01T17:42:21-08:00
|
|||
|
</D:creationdate>
|
|||
|
<D:displayname>
|
|||
|
Example collection
|
|||
|
</D:displayname>
|
|||
|
<D:resourcetype><D:collection/></D:resourcetype>
|
|||
|
<D:supportedlock>
|
|||
|
<D:lockentry>
|
|||
|
<D:lockscope><D:exclusive/></D:lockscope>
|
|||
|
<D:locktype><D:write/></D:locktype>
|
|||
|
</D:lockentry>
|
|||
|
<D:lockentry>
|
|||
|
<D:lockscope><D:shared/></D:lockscope>
|
|||
|
<D:locktype><D:write/></D:locktype>
|
|||
|
</D:lockentry>
|
|||
|
</D:supportedlock>
|
|||
|
</D:prop>
|
|||
|
<D:status>HTTP/1.1 200 OK</D:status>
|
|||
|
</D:propstat>
|
|||
|
</D:response>
|
|||
|
<D:response>
|
|||
|
<D:href>http://www.foo.bar/container/front.html</D:href>
|
|||
|
<D:propstat>
|
|||
|
<D:prop xmlns:R="http://www.foo.bar/boxschema/">
|
|||
|
<R:bigbox>
|
|||
|
<R:BoxType>Box type B</R:BoxType>
|
|||
|
</R:bigbox>
|
|||
|
<D:creationdate>
|
|||
|
1997-12-01T18:27:21-08:00
|
|||
|
</D:creationdate>
|
|||
|
<D:displayname>
|
|||
|
Example HTML resource
|
|||
|
</D:displayname>
|
|||
|
<D:getcontentlength>
|
|||
|
4525
|
|||
|
</D:getcontentlength>
|
|||
|
<D:getcontenttype>
|
|||
|
text/html
|
|||
|
</D:getcontenttype>
|
|||
|
<D:getetag>
|
|||
|
zzyzx
|
|||
|
</D:getetag>
|
|||
|
<D:getlastmodified>
|
|||
|
Monday, 12-Jan-98 09:25:56 GMT
|
|||
|
</D:getlastmodified>
|
|||
|
<D:resourcetype/>
|
|||
|
<D:supportedlock>
|
|||
|
<D:lockentry>
|
|||
|
<D:lockscope><D:exclusive/></D:lockscope>
|
|||
|
<D:locktype><D:write/></D:locktype>
|
|||
|
</D:lockentry>
|
|||
|
<D:lockentry>
|
|||
|
<D:lockscope><D:shared/></D:lockscope>
|
|||
|
<D:locktype><D:write/></D:locktype>
|
|||
|
</D:lockentry>
|
|||
|
</D:supportedlock>
|
|||
|
</D:prop>
|
|||
|
<D:status>HTTP/1.1 200 OK</D:status>
|
|||
|
</D:propstat>
|
|||
|
</D:response>
|
|||
|
</D:multistatus>
|
|||
|
</pre><p id="rfc.section.8.1.2.p.3">In this example, PROPFIND was invoked on the resource http://www.foo.bar/container/ with a Depth header of 1, meaning the request applies to the resource and its children, and a propfind XML element containing the allprop XML element, meaning the request should return the name and value of all properties defined on each resource.</p><p id="rfc.section.8.1.2.p.4">The resource http://www.foo.bar/container/ has six properties defined on it:</p><p id="rfc.section.8.1.2.p.5">http://www.foo.bar/boxschema/bigbox, http://www.foo.bar/boxschema/author, DAV:creationdate, DAV:displayname, DAV:resourcetype, and DAV:supportedlock.</p><p id="rfc.section.8.1.2.p.6">The last four properties are WebDAV-specific, defined in <a href="http://www.webdav.org/specs/rfc2518.html#dav.properties" title="DAV Properties">Section 13</a>. Since GET is not supported on this resource, the get* properties (e.g., getcontentlength) are not defined on this resource. The DAV-specific properties assert that "container" was created on December 1, 1997, at 5:42:21PM, in a time zone 8 hours west of GMT (creationdate), has a name of "Example collection" (displayname), a collection resource type (resourcetype), and supports exclusive write and shared write locks (supportedlock).</p><p id="rfc.section.8.1.2.p.7">The resource http://www.foo.bar/container/front.html has nine properties defined on it:</p><p id="rfc.section.8.1.2.p.8">http://www.foo.bar/boxschema/bigbox (another instance of the "bigbox" property type), DAV:creationdate, DAV:displayname, DAV:getcontentlength, DAV:getcontenttype, DAV:getetag, DAV:getlastmodified, DAV:resourcetype, and DAV:supportedlock.</p><p id="rfc.section.8.1.2.p.9">The DAV-specific properties assert that "front.html" was created on December 1, 1997, at 6:27:21PM, in a time zone 8 hours west of GMT (creationdate), has a name of "Example HTML resource" (displayname), a content length of 4525 bytes (getcontentlength), a MIME type of "text/html" (getcontenttype), an entity tag of "zzyzx" (getetag), was last modified on Monday, January 12, 1998, at 09:25:56 GMT (getlastmodified), has an empty resource type, meaning that it is not a collection (resourcetype), and supports both exclusive write and shared write locks (supportedlock).</p><h3 id="rfc.section.8.1.3"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.1.3">8.1.3</a> Example - Using propname to Retrieve all Property Names</h3><div id="rfc.figure.u.7"></div><p>>>Request</p><pre class="text2"> PROPFIND /container/ HTTP/1.1
|
|||
|
Host: www.foo.bar
|
|||
|
Content-Type: text/xml; charset="utf-8"
|
|||
|
Content-Length: xxxx
|
|||
|
|
|||
|
<?xml version="1.0" encoding="utf-8" ?>
|
|||
|
<propfind xmlns="DAV:">
|
|||
|
<propname/>
|
|||
|
</propfind>
|
|||
|
</pre><div id="rfc.figure.u.8"></div><p>>>Response</p><pre class="text"> HTTP/1.1 207 Multi-Status
|
|||
|
Content-Type: text/xml; charset="utf-8"
|
|||
|
Content-Length: xxxx
|
|||
|
|
|||
|
<?xml version="1.0" encoding="utf-8" ?>
|
|||
|
<multistatus xmlns="DAV:">
|
|||
|
<response>
|
|||
|
<href>http://www.foo.bar/container/</href>
|
|||
|
<propstat>
|
|||
|
<prop xmlns:R="http://www.foo.bar/boxschema/">
|
|||
|
<R:bigbox/>
|
|||
|
<R:author/>
|
|||
|
<creationdate/>
|
|||
|
<displayname/>
|
|||
|
<resourcetype/>
|
|||
|
<supportedlock/>
|
|||
|
</prop>
|
|||
|
<status>HTTP/1.1 200 OK</status>
|
|||
|
</propstat>
|
|||
|
</response>
|
|||
|
<response>
|
|||
|
<href>http://www.foo.bar/container/front.html</href>
|
|||
|
<propstat>
|
|||
|
<prop xmlns:R="http://www.foo.bar/boxschema/">
|
|||
|
<R:bigbox/>
|
|||
|
<creationdate/>
|
|||
|
<displayname/>
|
|||
|
<getcontentlength/>
|
|||
|
<getcontenttype/>
|
|||
|
<getetag/>
|
|||
|
<getlastmodified/>
|
|||
|
<resourcetype/>
|
|||
|
<supportedlock/>
|
|||
|
</prop>
|
|||
|
<status>HTTP/1.1 200 OK</status>
|
|||
|
</propstat>
|
|||
|
</response>
|
|||
|
</multistatus>
|
|||
|
</pre><p id="rfc.section.8.1.3.p.3">In this example, PROPFIND is invoked on the collection resource http://www.foo.bar/container/, with a propfind XML element containing the propname XML element, meaning the name of all properties should be returned. Since no Depth header is present, it assumes its default value of "infinity", meaning the name of the properties on the collection and all its progeny should be returned.</p><p id="rfc.section.8.1.3.p.4">Consistent with the previous example, resource http://www.foo.bar/container/ has six properties defined on it, http://www.foo.bar/boxschema/bigbox, http://www.foo.bar/boxschema/author, DAV:creationdate, DAV:displayname, DAV:resourcetype, and DAV:supportedlock.</p><p id="rfc.section.8.1.3.p.5">The resource http://www.foo.bar/container/index.html, a member of the "container" collection, has nine properties defined on it, http://www.foo.bar/boxschema/bigbox, DAV:creationdate, DAV:displayname, DAV:getcontentlength, DAV:getcontenttype, DAV:getetag, DAV:getlastmodified, DAV:resourcetype, and DAV:supportedlock.</p><p id="rfc.section.8.1.3.p.6">This example also demonstrates the use of XML namespace scoping, and the default namespace. Since the "xmlns" attribute does not contain an explicit "shorthand name" (prefix) letter, the namespace applies by default to all enclosed elements. Hence, all elements which do not explicitly state the namespace to which they belong are members of the "DAV:" namespace schema.</p><div id="rfc.iref.p.3"></div><div id="rfc.iref.m.3"></div><h2 id="rfc.section.8.2"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.2">8.2</a> <a id="METHOD_PROPPATCH" href="http://www.webdav.org/specs/rfc2518.html#METHOD_PROPPATCH">PROPPATCH</a></h2><p id="rfc.section.8.2.p.1">The PROPPATCH method processes instructions specified in the request body to set and/or remove properties defined on the resource identified by the Request-URI.</p><p id="rfc.section.8.2.p.2">All DAV compliant resources <em class="bcp14">MUST</em> support the PROPPATCH method and <em class="bcp14">MUST</em> process instructions that are specified using the propertyupdate, set, and remove XML elements of the DAV schema. Execution of the directives in this method is, of course, subject to access control constraints. DAV compliant resources <em class="bcp14">SHOULD</em> support the setting of arbitrary dead properties.</p><p id="rfc.section.8.2.p.3">The request message body of a PROPPATCH method <em class="bcp14">MUST</em> contain the propertyupdate XML element. Instruction processing <em class="bcp14">MUST</em> occur in the order instructions are received (i.e., from top to bottom). Instructions <em class="bcp14">MUST</em> either all be executed or none executed. Thus if any error occurs during processing all executed instructions <em class="bcp14">MUST</em> be undone and a proper error result returned. Instruction processing details can be found in the definition of the set and remove instructions in <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_propertyupdate" title="propertyupdate XML element">Section 12.13</a>.</p><h3 id="rfc.section.8.2.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.2.1">8.2.1</a> Status Codes for use with 207 (Multi-Status)</h3><p id="rfc.section.8.2.1.p.1">The following are examples of response codes one would expect to be used in a 207 (Multi-Status) response for this method. Note, however, that unless explicitly prohibited any 2/3/4/5xx series response code may be used in a 207 (Multi-Status) response.</p><p id="rfc.section.8.2.1.p.2">200 (OK) - The command succeeded. As there can be a mixture of sets and removes in a body, a 201 (Created) seems inappropriate.</p><p id="rfc.section.8.2.1.p.3">403 (Forbidden) - The client, for reasons the server chooses not to specify, cannot alter one of the properties.</p><p id="rfc.section.8.2.1.p.4">409 (Conflict) - The client has provided a value whose semantics are not appropriate for the property. This includes trying to set read-only properties.</p><p id="rfc.section.8.2.1.p.5
|
|||
|
Host: www.foo.com
|
|||
|
Content-Type: text/xml; charset="utf-8"
|
|||
|
Content-Length: xxxx
|
|||
|
|
|||
|
<?xml version="1.0" encoding="utf-8" ?>
|
|||
|
<D:propertyupdate xmlns:D="DAV:"
|
|||
|
xmlns:Z="http://www.w3.com/standards/z39.50/">
|
|||
|
<D:set>
|
|||
|
<D:prop>
|
|||
|
<Z:authors>
|
|||
|
<Z:Author>Jim Whitehead</Z:Author>
|
|||
|
<Z:Author>Roy Fielding</Z:Author>
|
|||
|
</Z:authors>
|
|||
|
</D:prop>
|
|||
|
</D:set>
|
|||
|
<D:remove>
|
|||
|
<D:prop><Z:Copyright-Owner/></D:prop>
|
|||
|
</D:remove>
|
|||
|
</D:propertyupdate>
|
|||
|
</pre><div id="rfc.figure.u.10"></div><p>>>Response</p><pre class="text"> HTTP/1.1 207 Multi-Status
|
|||
|
Content-Type: text/xml; charset="utf-8"
|
|||
|
Content-Length: xxxx
|
|||
|
|
|||
|
<?xml version="1.0" encoding="utf-8" ?>
|
|||
|
<D:multistatus xmlns:D="DAV:"
|
|||
|
xmlns:Z="http://www.w3.com/standards/z39.50">
|
|||
|
<D:response>
|
|||
|
<D:href>http://www.foo.com/bar.html</D:href>
|
|||
|
<D:propstat>
|
|||
|
<D:prop><Z:Authors/></D:prop>
|
|||
|
<D:status>HTTP/1.1 424 Failed Dependency</D:status>
|
|||
|
</D:propstat>
|
|||
|
<D:propstat>
|
|||
|
<D:prop><Z:Copyright-Owner/></D:prop>
|
|||
|
<D:status>HTTP/1.1 409 Conflict</D:status>
|
|||
|
</D:propstat>
|
|||
|
<D:responsedescription> Copyright Owner can not be deleted or
|
|||
|
altered.</D:responsedescription>
|
|||
|
</D:response>
|
|||
|
</D:multistatus>
|
|||
|
</pre><p id="rfc.section.8.2.2.p.3">In this example, the client requests the server to set the value of the http://www.w3.com/standards/z39.50/Authors property, and to remove the property http://www.w3.com/standards/z39.50/Copyright-Owner. Since the Copyright-Owner property could not be removed, no property modifications occur. The 424 (Failed Dependency) status code for the Authors property indicates this action would have succeeded if it were not for the conflict with removing the Copyright-Owner property.</p><div id="rfc.iref.m.4"></div><div id="rfc.iref.m.5"></div><h2 id="rfc.section.8.3"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.3">8.3</a> <a id="METHOD_MKCOL" href="http://www.webdav.org/specs/rfc2518.html#METHOD_MKCOL">MKCOL Method</a></h2><p id="rfc.section.8.3.p.1">The MKCOL method is used to create a new collection. All DAV compliant resources <em class="bcp14">MUST</em> support the MKCOL method.</p><h3 id="rfc.section.8.3.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.3.1">8.3.1</a> Request</h3><p id="rfc.section.8.3.1.p.1">MKCOL creates a new collection resource at the location specified by the Request-URI. If the resource identified by the Request-URI is non-null then the MKCOL <em class="bcp14">MUST</em> fail. During MKCOL processing, a server <em class="bcp14">MUST</em> make the Request-URI a member of its parent collection, unless the Request-URI is "/". If no such ancestor exists, the method <em class="bcp14">MUST</em> fail. When the MKCOL operation creates a new collection resource, all ancestors <em class="bcp14">MUST</em> already exist, or the method <em class="bcp14">MUST</em> fail with a 409 (Conflict) status code. For example, if a request to create collection /a/b/c/d/ is made, and neither /a/b/ nor /a/b/c/ exists, the request must fail.</p><p id="rfc.section.8.3.1.p.2">When MKCOL is invoked without a request body, the newly created collection <em class="bcp14">SHOULD</em> have no members.</p><p id="rfc.section.8.3.1.p.3">A MKCOL request message may contain a message body. The behavior of a MKCOL request when the body is present is limited to creating collections, members of a collection, bodies of members and properties on the collections or members. If the server receives a MKCOL request entity type it does not support or understand it <em class="bcp14">MUST</em> respond with a 415 (Unsupported Media Type) status code. The exact behavior of MKCOL for various request media types is undefined in this document, and will be specified in separate documents.</p><h3 id="rfc.section.8.3.2"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.3.2">8.3.2</a> Status Codes</h3><p id="rfc.section.8.3.2.p.1">Responses from a MKCOL request <em class="bcp14">MUST NOT</em> be cached as MKCOL has non-idempotent semantics.</p><p id="rfc.section.8.3.2.p.2">201 (Created) - The collection or structured resource was created in its entirety.</p><p id="rfc.section.8.3.2.p.3">403 (Forbidden) - This indicates at least one of two conditions: 1) the server does not allow the creation of collections at the given location in its namespace, or 2) the parent collection of the Request-URI exists but cannot accept members.</p><p id="rfc.section.8.3.2.p.4">405 (Method Not Allowed) - MKCOL can only be executed on a deleted/non-existent resource.</p><p id="rfc.section.8.3.2.p.5">409 (Conflict) - A collection cannot be made at the Request-URI until one or more intermediate collections have been created.</p><p id="rfc.section.8.3.2.p.6">415 (Unsupported Media Type)- The server does not support the request type of the body.</p><p id="rfc.section.8.3.2.p.7">507 (Insufficient Storage) - The resource does not have sufficient space to record the state of the resource after the execution of this method.</p><h3 id="rfc.section.8.3.3"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.3.3">8.3.3</a> Example - MKCOL</h3><p id="rfc.section.8.3.3.p.1">This example creates a collection called /webdisc/xfiles/ on the server www.server.org.</p><div id="rfc.figure.
|
|||
|
Host: www.server.org
|
|||
|
</pre><div id="rfc.figure.u.12"></div><p>>>Response</p><pre class="text"> HTTP/1.1 201 Created
|
|||
|
</pre><h2 id="rfc.section.8.4"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.4">8.4</a> GET, HEAD for Collections</h2><p id="rfc.section.8.4.p.1">The semantics of GET are unchanged when applied to a collection, since GET is defined as, "retrieve whatever information (in the form of an entity) is identified by the Request-URI" <a href="http://www.webdav.org/specs/rfc2518.html#RFC2068" id="rfc.xref.RFC2068.8"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2068]</cite></a>. GET when applied to a collection may return the contents of an "index.html" resource, a human-readable view of the contents of the collection, or something else altogether. Hence it is possible that the result of a GET on a collection will bear no correlation to the membership of the collection.</p><p id="rfc.section.8.4.p.2">Similarly, since the definition of HEAD is a GET without a response message body, the semantics of HEAD are unmodified when applied to collection resources.</p><h2 id="rfc.section.8.5"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.5">8.5</a> POST for Collections</h2><p id="rfc.section.8.5.p.1">Since by definition the actual function performed by POST is determined by the server and often depends on the particular resource, the behavior of POST when applied to collections cannot be meaningfully modified because it is largely undefined. Thus the semantics of POST are unmodified when applied to a collection.</p><div id="rfc.iref.d.2"></div><div id="rfc.iref.m.6"></div><h2 id="rfc.section.8.6"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.6">8.6</a> <a id="METHOD_DELETE" href="http://www.webdav.org/specs/rfc2518.html#METHOD_DELETE">DELETE</a></h2><h3 id="rfc.section.8.6.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.6.1">8.6.1</a> DELETE for Non-Collection Resources</h3><p id="rfc.section.8.6.1.p.1">If the DELETE method is issued to a non-collection resource whose URIs are an internal member of one or more collections, then during DELETE processing a server <em class="bcp14">MUST</em> remove any URI for the resource identified by the Request-URI from collections which contain it as a member.</p><h3 id="rfc.section.8.6.2"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.6.2">8.6.2</a> DELETE for Collections</h3><p id="rfc.section.8.6.2.p.1">The DELETE method on a collection <em class="bcp14">MUST</em> act as if a "Depth: infinity" header was used on it. A client <em class="bcp14">MUST NOT</em> submit a Depth header with a DELETE on a collection with any value but infinity.</p><p id="rfc.section.8.6.2.p.2">DELETE instructs that the collection specified in the Request-URI and all resources identified by its internal member URIs are to be deleted.</p><p id="rfc.section.8.6.2.p.3">If any resource identified by a member URI cannot be deleted then all of the member's ancestors <em class="bcp14">MUST NOT</em> be deleted, so as to maintain namespace consistency.</p><p id="rfc.section.8.6.2.p.4">Any headers included with DELETE <em class="bcp14">MUST</em> be applied in processing every resource to be deleted.</p><p id="rfc.section.8.6.2.p.5">When the DELETE method has completed processing it <em class="bcp14">MUST</em> result in a consistent namespace.</p><p id="rfc.section.8.6.2.p.6">If an error occurs with a resource other than the resource identified in the Request-URI then the response <em class="bcp14">MUST</em> be a 207 (Multi-Status). 424 (Failed Dependency) errors <em class="bcp14">SHOULD NOT</em> be in the 207 (Multi-Status). They can be safely left out because the client will know that the ancestors of a resource could not be deleted when the client receives an error for the ancestor's progeny. Additionally 204 (No Content) errors <em class="bcp14">SHOULD NOT</em> be returned in the 207 (Multi-Status). The reason for this prohibition is that 204 (No Content) is the default success code.</p><h4 id="rfc.section.8.6.2.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.6.2.1">8.6.2.1</a> Example
|
|||
|
Host: www.foo.bar
|
|||
|
</pre><div id="rfc.figure.u.14"></div><p>>>Response</p><pre class="text"> HTTP/1.1 207 Multi-Status
|
|||
|
Content-Type: text/xml; charset="utf-8"
|
|||
|
Content-Length: xxxx
|
|||
|
|
|||
|
<?xml version="1.0" encoding="utf-8" ?>
|
|||
|
<d:multistatus xmlns:d="DAV:">
|
|||
|
<d:response>
|
|||
|
<d:href>http://www.foo.bar/container/resource3</d:href>
|
|||
|
<d:status>HTTP/1.1 423 Locked</d:status>
|
|||
|
</d:response>
|
|||
|
</d:multistatus>
|
|||
|
</pre><p id="rfc.section.8.6.2.1.p.3">In this example the attempt to delete http://www.foo.bar/container/resource3 failed because it is locked, and no lock token was submitted with the request. Consequently, the attempt to delete http://www.foo.bar/container/ also failed. Thus the client knows that the attempt to delete http://www.foo.bar/container/ must have also failed since the parent can not be deleted unless its child has also been deleted. Even though a Depth header has not been included, a depth of infinity is assumed because the method is on a collection.</p><div id="rfc.iref.p.4"></div><div id="rfc.iref.m.7"></div><h2 id="rfc.section.8.7"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.7">8.7</a> <a id="METHOD_PUT" href="http://www.webdav.org/specs/rfc2518.html#METHOD_PUT">PUT</a></h2><h3 id="rfc.section.8.7.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.7.1">8.7.1</a> PUT for Non-Collection Resources</h3><p id="rfc.section.8.7.1.p.1">A PUT performed on an existing resource replaces the GET response entity of the resource. Properties defined on the resource may be recomputed during PUT processing but are not otherwise affected. For example, if a server recognizes the content type of the request body, it may be able to automatically extract information that could be profitably exposed as properties.</p><p id="rfc.section.8.7.1.p.2">A PUT that would result in the creation of a resource without an appropriately scoped parent collection <em class="bcp14">MUST</em> fail with a 409 (Conflict).</p><h3 id="rfc.section.8.7.2"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.7.2">8.7.2</a> PUT for Collections</h3><p id="rfc.section.8.7.2.p.1">As defined in the HTTP/1.1 specification <a href="http://www.webdav.org/specs/rfc2518.html#RFC2068" id="rfc.xref.RFC2068.9"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2068]</cite></a>, the "PUT method requests that the enclosed entity be stored under the supplied Request-URI." Since submission of an entity representing a collection would implicitly encode creation and deletion of resources, this specification intentionally does not define a transmission format for creating a collection using PUT. Instead, the MKCOL method is defined to create collections.</p><p id="rfc.section.8.7.2.p.2">When the PUT operation creates a new non-collection resource all ancestors <em class="bcp14">MUST</em> already exist. If all ancestors do not exist, the method <em class="bcp14">MUST</em> fail with a 409 (Conflict) status code. For example, if resource /a/b/c/d.html is to be created and /a/b/c/ does not exist, then the request must fail.</p><div id="rfc.iref.c.2"></div><div id="rfc.iref.m.8"></div><h2 id="rfc.section.8.8"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.8">8.8</a> <a id="METHOD_COPY" href="http://www.webdav.org/specs/rfc2518.html#METHOD_COPY">COPY Method</a></h2><p id="rfc.section.8.8.p.1">The COPY method creates a duplicate of the source resource, identified by the Request-URI, in the destination resource, identified by the URI in the Destination header. The Destination header <em class="bcp14">MUST</em> be present. The exact behavior of the COPY method depends on the type of the source resource.</p><p id="rfc.section.8.8.p.2">All WebDAV compliant resources <em class="bcp14">MUST</em> support the COPY method. However, support for the COPY method does not guarantee the ability to copy a resource. For example, separate programs may control resources on the same server. As a result, it may not be possible to copy a resource to a location that appears to be on the same server.</p><h3 id="rfc.section.8.8.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.8.1">8.8.1</a> COPY for HTTP/1.1 resources</h3><p id="rfc.section.8.8.1.p.1">When the source resource is not a collection the result of the COPY method is the creation of a new resource at the destination whose state and behavior match that of the source resource as closely as possible. After a successful COPY invoca
|
|||
|
Host: www.ics.uci.edu
|
|||
|
Destination: http://www.ics.uci.edu/users/f/fielding/index.html
|
|||
|
</pre><div id="rfc.figure.u.16"></div><p>>>Response</p><pre class="text"> HTTP/1.1 204 No Content
|
|||
|
</pre><h3 id="rfc.section.8.8.7"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.8.7">8.8.7</a> Example - COPY with No Overwrite</h3><p id="rfc.section.8.8.7.p.1">The following example shows the same copy operation being performed, but with the Overwrite header set to "F." A response of 412 (Precondition Failed) is returned because the destination resource has a non-null state.</p><div id="rfc.figure.u.17"></div><p>>>Request</p><pre class="text2"> COPY /~fielding/index.html HTTP/1.1
|
|||
|
Host: www.ics.uci.edu
|
|||
|
Destination: http://www.ics.uci.edu/users/f/fielding/index.html
|
|||
|
Overwrite: F
|
|||
|
</pre><div id="rfc.figure.u.18"></div><p>>>Response</p><pre class="text"> HTTP/1.1 412 Precondition Failed
|
|||
|
</pre><h3 id="rfc.section.8.8.8"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.8.8">8.8.8</a> Example - COPY of a Collection</h3><div id="rfc.figure.u.19"></div><p>>>Request</p><pre class="text2"> COPY /container/ HTTP/1.1
|
|||
|
Host: www.foo.bar
|
|||
|
Destination: http://www.foo.bar/othercontainer/
|
|||
|
Depth: infinity
|
|||
|
Content-Type: text/xml; charset="utf-8"
|
|||
|
Content-Length: xxxx
|
|||
|
|
|||
|
<?xml version="1.0" encoding="utf-8" ?>
|
|||
|
<d:propertybehavior xmlns:d="DAV:">
|
|||
|
<d:keepalive>*</d:keepalive>
|
|||
|
</d:propertybehavior>
|
|||
|
</pre><div id="rfc.figure.u.20"></div><p>>>Response</p><pre class="text"> HTTP/1.1 207 Multi-Status
|
|||
|
Content-Type: text/xml; charset="utf-8"
|
|||
|
Content-Length: xxxx
|
|||
|
|
|||
|
<?xml version="1.0" encoding="utf-8" ?>
|
|||
|
<d:multistatus xmlns:d="DAV:">
|
|||
|
<d:response>
|
|||
|
<d:href>http://www.foo.bar/othercontainer/R2/</d:href>
|
|||
|
<d:status>HTTP/1.1 412 Precondition Failed</d:status>
|
|||
|
</d:response>
|
|||
|
</d:multistatus>
|
|||
|
</pre><p id="rfc.section.8.8.8.p.3">The Depth header is unnecessary as the default behavior of COPY on a collection is to act as if a "Depth: infinity" header had been submitted. In this example most of the resources, along with the collection, were copied successfully. However the collection R2 failed, most likely due to a problem with maintaining the liveness of properties (this is specified by the propertybehavior XML element). Because there was an error copying R2, none of R2's members were copied. However no errors were listed for those members due to the error minimization rules given in <a href="http://www.webdav.org/specs/rfc2518.html#copy.for.collections" title="COPY for Collections">Section 8.8.3</a>.</p><div id="rfc.iref.m.9"></div><div id="rfc.iref.m.10"></div><h2 id="rfc.section.8.9"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.9">8.9</a> <a id="METHOD_MOVE" href="http://www.webdav.org/specs/rfc2518.html#METHOD_MOVE">MOVE Method</a></h2><p id="rfc.section.8.9.p.1">The MOVE operation on a non-collection resource is the logical equivalent of a copy (COPY), followed by consistency maintenance processing, followed by a delete of the source, where all three actions are performed atomically. The consistency maintenance step allows the server to perform updates caused by the move, such as updating all URIs other than the Request-URI which identify the source resource, to point to the new destination resource. Consequently, the Destination header <em class="bcp14">MUST</em> be present on all MOVE methods and <em class="bcp14">MUST</em> follow all COPY requirements for the COPY part of the MOVE method. All DAV compliant resources <em class="bcp14">MUST</em> support the MOVE method. However, support for the MOVE method does not guarantee the ability to move a resource to a particular destination.</p><p id="rfc.section.8.9.p.2">For example, separate programs may actually control different sets of resources on the same server. Therefore, it may not be possible to move a resource within a namespace that appears to belong to the same server.</p><p id="rfc.section.8.9.p.3">If a resource exists at the destination, the destination resource will be DELETEd as a side-effect of the MOVE operation, subject to the restrictions of the Overwrite header.</p><h3 id="rfc.section.8.9.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.9.1">8.9.1</a> MOVE for Properties</h3><p id="rfc.section.8.9.1.p.1">The behavior of properties on a MOVE, including the effects of the propertybehavior XML element, <em class="bcp14">MUST</em> be the same as specified in <a href="http://www.webdav.org/specs/rfc2518.html#copy.for.properties" title="COPY for Properties">Section 8.8.2</a>.</p><h3 id="rfc.section.8.9.2"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.9.2">8.9.2</a> MOVE for Collections</h3><p id="rfc.section.8.9.2.p.1">A MOVE with "Depth: infinity" instructs that the collection identified by the Request-URI be moved to the URI specified in the Destination header, and all resources identified by its internal member URIs are to be moved to locations relative to it, recursively through all levels of the collection hierarchy.</p><p id="rfc.section.8.9.2.p.2">The MOVE method on a collection <em class="bcp14">MUST</em> act as if a "Depth: infinity" header was used on it. A client <em class="bcp14">MUST NOT</em> submit a Depth header on a MOVE on a collection with any value but "infinity".</p><p id="rfc.section.8.9.2.p.3">Any headers included with MOVE <em class="bcp14">MUST</em> be applied in processing every resource to be moved with the exception of the Destination header.</p><p id="rfc.section.8.9.2.p.4">The behavior of the Destination header is the same as given for COPY on collections.</p><p id="rfc.section.8.9.2.p.5">When the MOVE method has completed processing it <em class="bcp14">MUST</em> have created a consistent namespace at both the source and destination (see section <a href="http://www.webdav.org/specs/rfc2518.html#http.url.namespace.model" title="HTTP URL N
|
|||
|
Host: www.ics.uci.edu
|
|||
|
Destination: http://www.ics.uci.edu/users/f/fielding/index.html
|
|||
|
</pre><div id="rfc.figure.u.22"></div><p>>>Response</p><pre class="text"> HTTP/1.1 201 Created
|
|||
|
Location: http://www.ics.uci.edu/users/f/fielding/index.html
|
|||
|
</pre><h3 id="rfc.section.8.9.6"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.9.6">8.9.6</a> Example - MOVE of a Collection</h3><div id="rfc.figure.u.23"></div><p>>>Request</p><pre class="text2"> MOVE /container/ HTTP/1.1
|
|||
|
Host: www.foo.bar
|
|||
|
Destination: http://www.foo.bar/othercontainer/
|
|||
|
Overwrite: F
|
|||
|
If: (<opaquelocktoken:fe184f2e-6eec-41d0-c765-01adc56e6bb4>)
|
|||
|
(<opaquelocktoken:e454f3f3-acdc-452a-56c7-00a5c91e4b77>)
|
|||
|
Content-Type: text/xml; charset="utf-8"
|
|||
|
Content-Length: xxxx
|
|||
|
|
|||
|
<?xml version="1.0" encoding="utf-8" ?>
|
|||
|
<d:propertybehavior xmlns:d='DAV:'>
|
|||
|
<d:keepalive>*</d:keepalive>
|
|||
|
</d:propertybehavior>
|
|||
|
</pre><div id="rfc.figure.u.24"></div><p>>>Response</p><pre class="text"> HTTP/1.1 207 Multi-Status
|
|||
|
Content-Type: text/xml; charset="utf-8"
|
|||
|
Content-Length: xxxx
|
|||
|
|
|||
|
<?xml version="1.0" encoding="utf-8" ?>
|
|||
|
<d:multistatus xmlns:d='DAV:'>
|
|||
|
<d:response>
|
|||
|
<d:href>http://www.foo.bar/othercontainer/C2/</d:href>
|
|||
|
<d:status>HTTP/1.1 423 Locked</d:status>
|
|||
|
</d:response>
|
|||
|
</d:multistatus>
|
|||
|
</pre><p id="rfc.section.8.9.6.p.3">In this example the client has submitted a number of lock tokens with the request. A lock token will need to be submitted for every resource, both source and destination, anywhere in the scope of the method, that is locked. In this case the proper lock token was not submitted for the destination http://www.foo.bar/othercontainer/C2/. This means that the resource /container/C2/ could not be moved. Because there was an error copying /container/C2/, none of /container/C2's members were copied. However no errors were listed for those members due to the error minimization rules given in <a href="http://www.webdav.org/specs/rfc2518.html#copy.for.collections" title="COPY for Collections">Section 8.8.3</a>. User agent authentication has previously occurred via a mechanism outside the scope of the HTTP protocol, in an underlying transport layer.</p><div id="rfc.iref.l.2"></div><div id="rfc.iref.m.11"></div><h2 id="rfc.section.8.10"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.10">8.10</a> <a id="METHOD_LOCK" href="http://www.webdav.org/specs/rfc2518.html#METHOD_LOCK">LOCK Method</a></h2><p id="rfc.section.8.10.p.1">The following sections describe the LOCK method, which is used to take out a lock of any access type. These sections on the LOCK method describe only those semantics that are specific to the LOCK method and are independent of the access type of the lock being requested.</p><p id="rfc.section.8.10.p.2">Any resource which supports the LOCK method <em class="bcp14">MUST</em>, at minimum, support the XML request and response formats defined herein.</p><h3 id="rfc.section.8.10.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.10.1">8.10.1</a> Operation</h3><p id="rfc.section.8.10.1.p.1">A LOCK method invocation creates the lock specified by the lockinfo XML element on the Request-URI. Lock method requests <em class="bcp14">SHOULD</em> have a XML request body which contains an owner XML element for this lock request, unless this is a refresh request. The LOCK request may have a Timeout header.</p><p id="rfc.section.8.10.1.p.2">Clients <em class="bcp14">MUST</em> assume that locks may arbitrarily disappear at any time, regardless of the value given in the Timeout header. The Timeout header only indicates the behavior of the server if "extraordinary" circumstances do not occur. For example, an administrator may remove a lock at any time or the system may crash in such a way that it loses the record of the lock's existence. The response <em class="bcp14">MUST</em> contain the value of the lockdiscovery property in a prop XML element.</p><p id="rfc.section.8.10.1.p.3">In order to indicate the lock token associated with a newly created lock, a Lock-Token response header <em class="bcp14">MUST</em> be included in the response for every successful LOCK request for a new lock. Note that the Lock-Token header would not be returned in the response for a successful refresh LOCK request because a new lock was not created.</p><h3 id="rfc.section.8.10.2"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.10.2">8.10.2</a> The Effect of Locks on Properties and Collections</h3><p id="rfc.section.8.10.2.p.1">The scope of a lock is the entire state of the resource, including its body and associated properties. As a result, a lock on a resource <em class="bcp14">MUST</em> also lock the resource's properties.</p><p id="rfc.section.8.10.2.p.2">For collections, a lock also affects the ability to add or remove members. The nature of the effect depends upon the type of access control involved.</p><h3 id="rfc.section.8.10.3"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.10.3">8.10.3</a> Locking Replicated Resources</h3><p id="rfc.section.8.10.3.p.1">A resource may be made available through more than one URI. However locks apply to resources, not URIs. Therefore a LOCK request on a resource <em class="bcp14">MUST NOT</em> succeed if can not be honored by all the URIs through which the resource is addressable.</p><h3 id="rfc.
|
|||
|
The table below describes the behavior that occurs when a lock
|
|||
|
request is made on a resource.
|
|||
|
" class="tt full" cellpadding="3" cellspacing="0"><thead><tr><th style="width: 40%;">Current lock state / Lock request</th><th>Shared Lock</th><th>Exclusive Lock</th></tr></thead><tbody><tr><td>None</td><td>True</td><td>True</td></tr><tr><td>Shared Lock</td><td>True</td><td>False</td></tr><tr><td>Exclusive Lock</td><td>False</td><td>False*</td></tr></tbody></table><p>Legend: True = lock may be granted. False = lock <em class="bcp14">MUST NOT</em> be granted. *=It is illegal for a principal to request the same lock twice.</p></div><p id="rfc.section.8.10.6.p.1">The current lock state of a resource is given in the leftmost column, and lock requests are listed in the first row. The intersection of a row and column gives the result of a lock request. For example, if a shared lock is held on a resource, and an exclusive lock is requested, the table entry is "false", indicating the lock must not be granted.</p><h3 id="rfc.section.8.10.7"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.10.7">8.10.7</a> Status Codes</h3><p id="rfc.section.8.10.7.p.1">200 (OK) - The lock request succeeded and the value of the lockdiscovery property is included in the body.</p><p id="rfc.section.8.10.7.p.2">412 (Precondition Failed) - The included lock token was not enforceable on this resource or the server could not satisfy the request in the lockinfo XML element.</p><p id="rfc.section.8.10.7.p.3">423 (Locked) - The resource is locked, so the method has been rejected.</p><h3 id="rfc.section.8.10.8"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.10.8">8.10.8</a> Example - Simple Lock Request</h3><div id="rfc.figure.u.25"></div><p>>>Request</p><pre class="text2"> LOCK /workspace/webdav/proposal.doc HTTP/1.1
|
|||
|
Host: webdav.sb.aol.com
|
|||
|
Timeout: Infinite, Second-4100000000
|
|||
|
Content-Type: text/xml; charset="utf-8"
|
|||
|
Content-Length: xxxx
|
|||
|
Authorization: Digest username="ejw",
|
|||
|
realm="ejw@webdav.sb.aol.com", nonce="...",
|
|||
|
uri="/workspace/webdav/proposal.doc",
|
|||
|
response="...", opaque="..."
|
|||
|
|
|||
|
<?xml version="1.0" encoding="utf-8" ?>
|
|||
|
<D:lockinfo xmlns:D='DAV:'>
|
|||
|
<D:lockscope><D:exclusive/></D:lockscope>
|
|||
|
<D:locktype><D:write/></D:locktype>
|
|||
|
<D:owner>
|
|||
|
<D:href>http://www.ics.uci.edu/~ejw/contact.html</D:href>
|
|||
|
</D:owner>
|
|||
|
</D:lockinfo>
|
|||
|
</pre><div id="rfc.figure.u.26"></div><p>>>Response</p><pre class="text"> HTTP/1.1 200 OK
|
|||
|
Content-Type: text/xml; charset="utf-8"
|
|||
|
Content-Length: xxxx
|
|||
|
|
|||
|
<?xml version="1.0" encoding="utf-8" ?>
|
|||
|
<D:prop xmlns:D="DAV:">
|
|||
|
<D:lockdiscovery>
|
|||
|
<D:activelock>
|
|||
|
<D:locktype><D:write/></D:locktype>
|
|||
|
<D:lockscope><D:exclusive/></D:lockscope>
|
|||
|
<D:depth>Infinity</D:depth>
|
|||
|
<D:owner>
|
|||
|
<D:href>
|
|||
|
http://www.ics.uci.edu/~ejw/contact.html
|
|||
|
</D:href>
|
|||
|
</D:owner>
|
|||
|
<D:timeout>Second-604800</D:timeout>
|
|||
|
<D:locktoken>
|
|||
|
<D:href>
|
|||
|
opaquelocktoken:e71d4fae-5dec-22d6-fea5-00a0c91e6be4
|
|||
|
</D:href>
|
|||
|
</D:locktoken>
|
|||
|
</D:activelock>
|
|||
|
</D:lockdiscovery>
|
|||
|
</D:prop>
|
|||
|
</pre><p id="rfc.section.8.10.8.p.3">This example shows the successful creation of an exclusive write lock on resource http://webdav.sb.aol.com/workspace/webdav/proposal.doc. The resource http://www.ics.uci.edu/~ejw/contact.html contains contact information for the owner of the lock. The server has an activity-based timeout policy in place on this resource, which causes the lock to automatically be removed after 1 week (604800 seconds). Note that the nonce, response, and opaque fields have not been calculated in the Authorization request header.</p><h3 id="rfc.section.8.10.9"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.10.9">8.10.9</a> Example - Refreshing a Write Lock</h3><div id="rfc.figure.u.27"></div><p>>>Request</p><pre class="text2"> LOCK /workspace/webdav/proposal.doc HTTP/1.1
|
|||
|
Host: webdav.sb.aol.com
|
|||
|
Timeout: Infinite, Second-4100000000
|
|||
|
If: (<opaquelocktoken:e71d4fae-5dec-22d6-fea5-00a0c91e6be4>)
|
|||
|
Authorization: Digest username="ejw",
|
|||
|
realm="ejw@webdav.sb.aol.com", nonce="...",
|
|||
|
uri="/workspace/webdav/proposal.doc",
|
|||
|
response="...", opaque="..."
|
|||
|
</pre><div id="rfc.figure.u.28"></div><p>>>Response</p><pre class="text"> HTTP/1.1 200 OK
|
|||
|
Content-Type: text/xml; charset="utf-8"
|
|||
|
Content-Length: xxxx
|
|||
|
|
|||
|
<?xml version="1.0" encoding="utf-8" ?>
|
|||
|
<D:prop xmlns:D="DAV:">
|
|||
|
<D:lockdiscovery>
|
|||
|
<D:activelock>
|
|||
|
<D:locktype><D:write/></D:locktype>
|
|||
|
<D:lockscope><D:exclusive/></D:lockscope>
|
|||
|
<D:depth>Infinity</D:depth>
|
|||
|
<D:owner>
|
|||
|
<D:href>
|
|||
|
http://www.ics.uci.edu/~ejw/contact.html
|
|||
|
</D:href>
|
|||
|
</D:owner>
|
|||
|
<D:timeout>Second-604800</D:timeout>
|
|||
|
<D:locktoken>
|
|||
|
<D:href>
|
|||
|
opaquelocktoken:e71d4fae-5dec-22d6-fea5-00a0c91e6be4
|
|||
|
</D:href>
|
|||
|
</D:locktoken>
|
|||
|
</D:activelock>
|
|||
|
</D:lockdiscovery>
|
|||
|
</D:prop>
|
|||
|
</pre><p id="rfc.section.8.10.9.p.3">This request would refresh the lock, resetting any time outs. Notice that the client asked for an infinite time out but the server choose to ignore the request. In this example, the nonce, response, and opaque fields have not been calculated in the Authorization request header.</p><h3 id="rfc.section.8.10.10"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.10.10">8.10.10</a> Example - Multi-Resource Lock Request</h3><div id="rfc.figure.u.29"></div><p>>>Request</p><pre class="text2"> LOCK /webdav/ HTTP/1.1
|
|||
|
Host: webdav.sb.aol.com
|
|||
|
Timeout: Infinite, Second-4100000000
|
|||
|
Depth: infinity
|
|||
|
Content-Type: text/xml; charset="utf-8"
|
|||
|
Content-Length: xxxx
|
|||
|
Authorization: Digest username="ejw",
|
|||
|
realm="ejw@webdav.sb.aol.com", nonce="...",
|
|||
|
uri="/workspace/webdav/proposal.doc",
|
|||
|
response="...", opaque="..."
|
|||
|
|
|||
|
<?xml version="1.0" encoding="utf-8" ?>
|
|||
|
<D:lockinfo xmlns:D="DAV:">
|
|||
|
<D:locktype><D:write/></D:locktype>
|
|||
|
<D:lockscope><D:exclusive/></D:lockscope>
|
|||
|
<D:owner>
|
|||
|
<D:href>http://www.ics.uci.edu/~ejw/contact.html</D:href>
|
|||
|
</D:owner>
|
|||
|
</D:lockinfo>
|
|||
|
</pre><div id="rfc.figure.u.30"></div><p>>>Response</p><pre class="text"> HTTP/1.1 207 Multi-Status
|
|||
|
Content-Type: text/xml; charset="utf-8"
|
|||
|
Content-Length: xxxx
|
|||
|
|
|||
|
<?xml version="1.0" encoding="utf-8" ?>
|
|||
|
<D:multistatus xmlns:D="DAV:">
|
|||
|
<D:response>
|
|||
|
<D:href>http://webdav.sb.aol.com/webdav/secret</D:href>
|
|||
|
<D:status>HTTP/1.1 403 Forbidden</D:status>
|
|||
|
</D:response>
|
|||
|
<D:response>
|
|||
|
<D:href>http://webdav.sb.aol.com/webdav/</D:href>
|
|||
|
<D:propstat>
|
|||
|
<D:prop><D:lockdiscovery/></D:prop>
|
|||
|
<D:status>HTTP/1.1 424 Failed Dependency</D:status>
|
|||
|
</D:propstat>
|
|||
|
</D:response>
|
|||
|
</D:multistatus>
|
|||
|
</pre><p id="rfc.section.8.10.10.p.3">This example shows a request for an exclusive write lock on a collection and all its children. In this request, the client has specified that it desires an infinite length lock, if available, otherwise a timeout of 4.1 billion seconds, if available. The request entity body contains the contact information for the principal taking out the lock, in this case a web page URL.</p><p id="rfc.section.8.10.10.p.4">The error is a 403 (Forbidden) response on the resource http://webdav.sb.aol.com/webdav/secret. Because this resource could not be locked, none of the resources were locked. Note also that the lockdiscovery property for the Request-URI has been included as required. In this example the lockdiscovery property is empty which means that there are no outstanding locks on the resource.</p><p id="rfc.section.8.10.10.p.5">In this example, the nonce, response, and opaque fields have not been calculated in the Authorization request header.</p><div id="rfc.iref.u.3"></div><div id="rfc.iref.m.12"></div><h2 id="rfc.section.8.11"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.11">8.11</a> <a id="METHOD_UNLOCK" href="http://www.webdav.org/specs/rfc2518.html#METHOD_UNLOCK">UNLOCK Method</a></h2><p id="rfc.section.8.11.p.1">The UNLOCK method removes the lock identified by the lock token in the Lock-Token request header from the Request-URI, and all other resources included in the lock. If all resources which have been locked under the submitted lock token can not be unlocked then the UNLOCK request <em class="bcp14">MUST</em> fail.</p><p id="rfc.section.8.11.p.2">Any DAV compliant resource which supports the LOCK method <em class="bcp14">MUST</em> support the UNLOCK method.</p><h3 id="rfc.section.8.11.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.8.11.1">8.11.1</a> Example - UNLOCK</h3><div id="rfc.figure.u.31"></div><p>>>Request</p><pre class="text2"> UNLOCK /workspace/webdav/info.doc HTTP/1.1
|
|||
|
Host: webdav.sb.aol.com
|
|||
|
Lock-Token: <opaquelocktoken:a515cfa4-5da4-22e1-f5b5-00a0451e6bf7>
|
|||
|
Authorization: Digest username="ejw",
|
|||
|
realm="ejw@webdav.sb.aol.com", nonce="...",
|
|||
|
uri="/workspace/webdav/proposal.doc",
|
|||
|
response="...", opaque="..."
|
|||
|
</pre><div id="rfc.figure.u.32"></div><p>>>Response</p><pre class="text"> HTTP/1.1 204 No Content
|
|||
|
</pre><p id="rfc.section.8.11.1.p.3">In this example, the lock identified by the lock token "opaquelocktoken:a515cfa4-5da4-22e1-f5b5-00a0451e6bf7" is successfully removed from the resource http://webdav.sb.aol.com/workspace/webdav/info.doc. If this lock included more than just one resource, the lock is removed from all resources included in the lock. The 204 (No Content) status code is used instead of 200 (OK) because there is no response entity body.</p><p id="rfc.section.8.11.1.p.4">In this example, the nonce, response, and opaque fields have not been calculated in the Authorization request header.</p><h1 id="rfc.section.9"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.9">9.</a> <a id="http.headers.for.distributed.authoring" href="http://www.webdav.org/specs/rfc2518.html#http.headers.for.distributed.authoring">HTTP Headers for Distributed Authoring</a></h1><div id="rfc.iref.d.3"></div><div id="rfc.iref.h.1"></div><h2 id="rfc.section.9.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.9.1">9.1</a> <a id="HEADER_DAV" href="http://www.webdav.org/specs/rfc2518.html#HEADER_DAV">DAV Header</a></h2><div id="rfc.figure.u.33"></div><pre class="inline"> DAV = "DAV" ":" "1" ["," "2"] ["," 1#extend]
|
|||
|
</pre><p id="rfc.section.9.1.p.2">This header indicates that the resource supports the DAV schema and protocol as specified. All DAV compliant resources <em class="bcp14">MUST</em> return the DAV header on all OPTIONS responses.</p><p id="rfc.section.9.1.p.3">The value is a list of all compliance classes that the resource supports. Note that above a comma has already been added to the 2. This is because a resource can not be level 2 compliant unless it is also level 1 compliant. Please refer to <a href="http://www.webdav.org/specs/rfc2518.html#dav.compliance.classes" title="DAV Compliance Classes">Section 15</a> for more details. In general, however, support for one compliance class does not entail support for any other.</p><div id="rfc.iref.d.4"></div><div id="rfc.iref.h.2"></div><h2 id="rfc.section.9.2"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.9.2">9.2</a> <a id="HEADER_Depth" href="http://www.webdav.org/specs/rfc2518.html#HEADER_Depth">Depth Header</a></h2><div id="rfc.figure.u.34"></div><pre class="inline"> Depth = "Depth" ":" ("0" | "1" | "infinity")
|
|||
|
</pre><p id="rfc.section.9.2.p.2">The Depth header is used with methods executed on resources which could potentially have internal members to indicate whether the method is to be applied only to the resource ("Depth: 0"), to the resource and its immediate children, ("Depth: 1"), or the resource and all its progeny ("Depth: infinity").</p><p id="rfc.section.9.2.p.3">The Depth header is only supported if a method's definition explicitly provides for such support.</p><p id="rfc.section.9.2.p.4">The following rules are the default behavior for any method that supports the Depth header. A method may override these defaults by defining different behavior in its definition.</p><p id="rfc.section.9.2.p.5">Methods which support the Depth header may choose not to support all of the header's values and may define, on a case by case basis, the behavior of the method if a Depth header is not present. For example, the MOVE method only supports "Depth: infinity" and if a Depth header is not present will act as if a "Depth: infinity" header had been applied.</p><p id="rfc.section.9.2.p.6">Clients <em class="bcp14">MUST NOT</em> rely upon methods executing on members of their hierarchies in any particular order or on the execution being atomic unless the particular method explicitly provides such guarantees.</p><p id="rfc.section.9.2.p.7">Upon execution, a method with a Depth header will perform as much of its assigned task as possible and then return a response specifying what it was able to accomplish and what it failed to do.</p><p id="rfc.section.9.2.p.8">So, for example, an attempt to COPY a hierarchy may result in some of the members being copied and some not.</p><p id="rfc.section.9.2.p.9">Any headers on a method that has a defined interaction with the Depth header <em class="bcp14">MUST</em> be applied to all resources in the scope of the method except where alternative behavior is explicitly defined. For example, an If-Match header will have its value applied against every resource in the method's scope and will cause the method to fail if the header fails to match.</p><p id="rfc.section.9.2.p.10">If a resource, source or destination, within the scope of the method with a Depth header is locked in such a way as to prevent the successful execution of the method, then the lock token for that resource <em class="bcp14">MUST</em> be submitted with the request in the If request header.</p><p id="rfc.section.9.2.p.11">The Depth header only specifies the behavior of the method with regards to internal children. If a resource does not have internal children then the Depth header <em class="bcp14">MUST</em> be ignored.</p><p id="rfc.section.9.2.p.12">Please note, however, that it is always an error to submit a value for the Depth header that is not allowed by the method's definition. Thus submitting a "Depth: 1" on a COPY, even if the resource does not have internal members, will result in a 400 (Bad Request). The method should fail not because the resource doesn't have internal members, but because of the illegal value in the header.</p><div id="rfc.iref.d.5"></div><div id="rfc.iref.h.3"></div><h2 id="rfc.section.9.3"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.9.3">9.3</a> <a id="HEADER_Destination" href="http://www.webdav.org/specs/rfc2518.html#HEADER_Destination">Destination Header</a></h2><div id="rfc.figure.u.35"></div><pre class="inline"> Destination = "Destination" ":" absoluteURI
|
|||
|
</pre><p id="rfc.section.9.3.p.2">The Destination header specifies the URI which identifies a destination resource for methods such as COPY and MOVE, which take two URIs as parameters. Note that the absoluteURI production is defined in <a href="http://www.webdav.org/specs/rfc2518.html#RFC2396" id="rfc.xref.RFC2396.6"><cite title="Uniform Resource Identifiers (URI): Generic Syntax">[RFC2396]</cite></a>.</p><div id="rfc.iref.i.2"></div><div id="rfc.iref.h.4"></div><h2 id="rfc.section.9.4"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.9.4">9.4</a> <a id="HEADER_If" href="http://www.webdav.org/specs/rfc2518.html#HEADER_If">If Header</a></h2><div id="rfc.figure.u.36"></div><pre class="inline"> If = "If" ":" ( 1*No-tag-list | 1*Tagged-list)
|
|||
|
No-tag-list = List
|
|||
|
Tagged-list = Resource 1*List
|
|||
|
Resource = Coded-URL
|
|||
|
List = "(" 1*(["Not"](State-token | "[" entity-tag "]")) ")"
|
|||
|
State-token = Coded-URL
|
|||
|
Coded-URL = "<" absoluteURI ">"
|
|||
|
</pre><p id="rfc.section.9.4.p.2">The If header is intended to have similar functionality to the If-Match header defined in section <a href="http://tools.ietf.org/html/rfc2068#section-14.25" id="rfc.xref.RFC2068.10">14.25</a> of <a href="http://www.webdav.org/specs/rfc2518.html#RFC2068" id="rfc.xref.RFC2068.11"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2068]</cite></a>. However the If header is intended for use with any URI which represents state information, referred to as a state token, about a resource as well as ETags. A typical example of a state token is a lock token, and lock tokens are the only state tokens defined in this specification.</p><p id="rfc.section.9.4.p.3">All DAV compliant resources <em class="bcp14">MUST</em> honor the If header.</p><p id="rfc.section.9.4.p.4">The If header's purpose is to describe a series of state lists. If the state of the resource to which the header is applied does not match any of the specified state lists then the request <em class="bcp14">MUST</em> fail with a 412 (Precondition Failed). If one of the described state lists matches the state of the resource then the request may succeed.</p><p id="rfc.section.9.4.p.5">Note that the absoluteURI production is defined in <a href="http://www.webdav.org/specs/rfc2518.html#RFC2396" id="rfc.xref.RFC2396.7"><cite title="Uniform Resource Identifiers (URI): Generic Syntax">[RFC2396]</cite></a>.</p><h3 id="rfc.section.9.4.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.9.4.1">9.4.1</a> No-tag-list Production</h3><p id="rfc.section.9.4.1.p.1">The No-tag-list production describes a series of state tokens and ETags. If multiple No-tag-list productions are used then one only needs to match the state of the resource for the method to be allowed to continue.</p><p id="rfc.section.9.4.1.p.2">If a method, due to the presence of a Depth or Destination header, is applied to multiple resources then the No-tag-list production <em class="bcp14">MUST</em> be applied to each resource the method is applied to.</p><h4 id="rfc.section.9.4.1.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.9.4.1.1">9.4.1.1</a> Example - No-tag-list If Header</h4><div id="rfc.figure.u.37"></div><pre class="text"> If: (<locktoken:a-write-lock-token> ["I am an ETag"]) (["I am another
|
|||
|
ETag"])
|
|||
|
</pre><p id="rfc.section.9.4.1.1.p.2">The previous header would require that any resources within the scope of the method must either be locked with the specified lock token and in the state identified by the "I am an ETag" ETag or in the state identified by the second ETag "I am another ETag". To put the matter more plainly one can think of the previous If header as being in the form (or (and <locktoken:a-write-lock-token> ["I am an ETag"]) (and ["I am another ETag"])).</p><h3 id="rfc.section.9.4.2"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.9.4.2">9.4.2</a> Tagged-list Production</h3><p id="rfc.section.9.4.2.p.1">The tagged-list production scopes a list production. That is, it specifies that the lists following the resource specification only apply to the specified resource. The scope of the resource production begins with the list production immediately following the resource production and ends with the next resource production, if any.</p><p id="rfc.section.9.4.2.p.2">When the If header is applied to a particular resource, the Tagged-list productions <em class="bcp14">MUST</em> be searched to determine if any of the listed resources match the operand resource(s) for the current method. If none of the resource productions match the current resource then the header <em class="bcp14">MUST</em> be ignored. If one of the resource productions does match the name of the resource under consideration then the list productions following the resource production <em class="bcp14">MUST</em> be applied to the resource in the manner specified in the previous section.</p><p id="rfc.section.9.4.2.p.3">The same URI <em class="bcp14">MUST NOT</em> appear more than once in a resource production in an If header.</p><h4 id="rfc.section.9.4.2.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.9.4.2.1">9.4.2.1</a> Example - Tagged List If header</h4><div id="rfc.figure.u.38"></div><pre class="text2"> COPY /resource1 HTTP/1.1
|
|||
|
Host: www.foo.bar
|
|||
|
Destination: http://www.foo.bar/resource2
|
|||
|
If: <http://www.foo.bar/resource1> (<locktoken:a-write-lock-token>
|
|||
|
[W/"A weak ETag"]) (["strong ETag"])
|
|||
|
<http://www.bar.bar/random>(["another strong ETag"])
|
|||
|
</pre><p id="rfc.section.9.4.2.1.p.2">In this example http://www.foo.bar/resource1 is being copied to http://www.foo.bar/resource2. When the method is first applied to http://www.foo.bar/resource1, resource1 must be in the state specified by "(<locktoken:a-write-lock-token> [W/"A weak ETag"]) (["strong ETag"])", that is, it either must be locked with a lock token of "locktoken:a-write-lock-token" and have a weak entity tag W/"A weak ETag" or it must have a strong entity tag "strong ETag".</p><p id="rfc.section.9.4.2.1.p.3">That is the only success condition since the resource http://www.bar.bar/random never has the method applied to it (the only other resource listed in the If header) and http://www.foo.bar/resource2 is not listed in the If header.</p><h3 id="rfc.section.9.4.3"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.9.4.3">9.4.3</a> not Production</h3><p id="rfc.section.9.4.3.p.1">Every state token or ETag is either current, and hence describes the state of a resource, or is not current, and does not describe the state of a resource. The boolean operation of matching a state token or ETag to the current state of a resource thus resolves to a true or false value. The not production is used to reverse that value. The scope of the not production is the state-token or entity-tag immediately following it.</p><div id="rfc.figure.u.39"></div><pre class="text"> If: (Not <locktoken:write1> <locktoken:write2>)
|
|||
|
</pre><p id="rfc.section.9.4.3.p.3">When submitted with a request, this If header requires that all operand resources must not be locked with locktoken:write1 and must be locked with locktoken:write2.</p><h3 id="rfc.section.9.4.4"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.9.4.4">9.4.4</a> Matching Function</h3><p id="rfc.section.9.4.4.p.1">When performing If header processing, the definition of a matching state token or entity tag is as follows.</p><p id="rfc.section.9.4.4.p.2">Matching entity tag: Where the entity tag matches an entity tag associated with that resource.</p><p id="rfc.section.9.4.4.p.3">Matching state token: Where there is an exact match between the state token in the If header and any state token on the resource.</p><h3 id="rfc.section.9.4.5"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.9.4.5">9.4.5</a> If Header and Non-DAV Compliant Proxies</h3><p id="rfc.section.9.4.5.p.1">Non-DAV compliant proxies will not honor the If header, since they will not understand the If header, and HTTP requires non-understood headers to be ignored. When communicating with HTTP/1.1 proxies, the "Cache-Control: no-cache" request header <em class="bcp14">MUST</em> be used so as to prevent the proxy from improperly trying to service the request from its cache. When dealing with HTTP/1.0 proxies the "Pragma: no-cache" request header <em class="bcp14">MUST</em> be used for the same reason.</p><div id="rfc.iref.l.3"></div><div id="rfc.iref.h.5"></div><h2 id="rfc.section.9.5"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.9.5">9.5</a> <a id="HEADER_Lock-Token" href="http://www.webdav.org/specs/rfc2518.html#HEADER_Lock-Token">Lock-Token Header</a></h2><div id="rfc.figure.u.40"></div><pre class="inline"> Lock-Token = "Lock-Token" ":" Coded-URL
|
|||
|
</pre><p id="rfc.section.9.5.p.2">The Lock-Token request header is used with the UNLOCK method to identify the lock to be removed. The lock token in the Lock-Token request header <em class="bcp14">MUST</em> identify a lock that contains the resource identified by Request-URI as a member.</p><p id="rfc.section.9.5.p.3">The Lock-Token response header is used with the LOCK method to indicate the lock token created as a result of a successful LOCK request to create a new lock.</p><div id="rfc.iref.o.1"></div><div id="rfc.iref.h.6"></div><h2 id="rfc.section.9.6"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.9.6">9.6</a> <a id="HEADER_Overwrite" href="http://www.webdav.org/specs/rfc2518.html#HEADER_Overwrite">Overwrite Header</a></h2><div id="rfc.figure.u.41"></div><pre class="inline"> Overwrite = "Overwrite" ":" ("T" | "F")
|
|||
|
</pre><p id="rfc.section.9.6.p.2">The Overwrite header specifies whether the server should overwrite the state of a non-null destination resource during a COPY or MOVE. A value of "F" states that the server must not perform the COPY or MOVE operation if the state of the destination resource is non-null. If the overwrite header is not included in a COPY or MOVE request then the resource <em class="bcp14">MUST</em> treat the request as if it has an overwrite header of value "T". While the Overwrite header appears to duplicate the functionality of the If-Match: * header of HTTP/1.1, If-Match applies only to the Request-URI, and not to the Destination of a COPY or MOVE.</p><p id="rfc.section.9.6.p.3">If a COPY or MOVE is not performed due to the value of the Overwrite header, the method <em class="bcp14">MUST</em> fail with a 412 (Precondition Failed) status code.</p><p id="rfc.section.9.6.p.4">All DAV compliant resources <em class="bcp14">MUST</em> support the Overwrite header.</p><div id="rfc.iref.s.1"></div><div id="rfc.iref.h.7"></div><div id="rfc.iref.41"></div><div id="rfc.iref.s.2"></div><h2 id="rfc.section.9.7"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.9.7">9.7</a> <a id="HEADER_Status-URI" href="http://www.webdav.org/specs/rfc2518.html#HEADER_Status-URI">Status-URI Response Header</a></h2><p id="rfc.section.9.7.p.1">The Status-URI response header may be used with the 102 (Processing) status code to inform the client as to the status of a method.</p><div id="rfc.figure.u.42"></div><pre class="inline"> Status-URI = "Status-URI" ":" *(Status-Code Coded-URL) ; Status-Code
|
|||
|
is defined in <a href="http://tools.ietf.org/html/rfc2068#section-6.1.1" id="rfc.xref.RFC2068.12">Section 6.1.1</a> of <a href="http://www.webdav.org/specs/rfc2518.html#RFC2068" id="rfc.xref.RFC2068.13"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2068]</cite></a>
|
|||
|
</pre><p id="rfc.section.9.7.p.3">The URIs listed in the header are source resources which have been affected by the outstanding method. The status code indicates the resolution of the method on the identified resource. So, for example, if a MOVE method on a collection is outstanding and a 102 (Processing) response with a Status-URI response header is returned, the included URIs will indicate resources that have had move attempted on them and what the result was.</p><div id="rfc.iref.t.1"></div><div id="rfc.iref.h.8"></div><h2 id="rfc.section.9.8"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.9.8">9.8</a> <a id="HEADER_Timeout" href="http://www.webdav.org/specs/rfc2518.html#HEADER_Timeout">Timeout Request Header</a></h2><div id="rfc.figure.u.43"></div><pre class="inline"> TimeOut = "Timeout" ":" 1#TimeType
|
|||
|
TimeType = ("Second-" DAVTimeOutVal | "Infinite" | Other)
|
|||
|
DAVTimeOutVal = 1*digit
|
|||
|
Other = "Extend" field-value ; See section <a href="http://tools.ietf.org/html/rfc2068#section-4.2" id="rfc.xref.RFC2068.14">4.2</a> of <a href="http://www.webdav.org/specs/rfc2518.html#RFC2068" id="rfc.xref.RFC2068.15"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2068]</cite></a>
|
|||
|
</pre><p id="rfc.section.9.8.p.2">Clients may include Timeout headers in their LOCK requests. However, the server is not required to honor or even consider these requests. Clients <em class="bcp14">MUST NOT</em> submit a Timeout request header with any method other than a LOCK method.</p><p id="rfc.section.9.8.p.3">A Timeout request header <em class="bcp14">MUST</em> contain at least one TimeType and may contain multiple TimeType entries. The purpose of listing multiple TimeType entries is to indicate multiple different values and value types that are acceptable to the client. The client lists the TimeType entries in order of preference.</p><p id="rfc.section.9.8.p.4">Timeout response values <em class="bcp14">MUST</em> use a Second value, Infinite, or a TimeType the client has indicated familiarity with. The server may assume a client is familiar with any TimeType submitted in a Timeout header.</p><p id="rfc.section.9.8.p.5">The "Second" TimeType specifies the number of seconds that will elapse between granting of the lock at the server, and the automatic removal of the lock. The timeout value for TimeType "Second" <em class="bcp14">MUST</em> NOT be greater than 2^32-1.</p><p id="rfc.section.9.8.p.6">The timeout counter <em class="bcp14">SHOULD</em> be restarted any time an owner of the lock sends a method to any member of the lock, including unsupported methods, or methods which are unsuccessful. However the lock <em class="bcp14">MUST</em> be refreshed if a refresh LOCK method is successfully received.</p><p id="rfc.section.9.8.p.7">If the timeout expires then the lock may be lost. Specifically, if the server wishes to harvest the lock upon time-out, the server <em class="bcp14">SHOULD</em> act as if an UNLOCK method was executed by the server on the resource using the lock token of the timed-out lock, performed with its override authority. Thus logs should be updated with the disposition of the lock, notifications should be sent, etc., just as they would be for an UNLOCK request.</p><p id="rfc.section.9.8.p.8">Servers are advised to pay close attention to the values submitted by clients, as they will be indicative of the type of activity the client intends to perform. For example, an applet running in a browser may need to lock a resource, but because of the instability of the environment within which the applet is running, the applet may be turned off without warning. As a result, the applet is likely to ask for a relatively small timeout value so that if the applet dies, the lock can be quickly harvested. However, a document management system is likely to ask for an extremely long timeout because its user may be planning on going off-line.</p><p id="rfc.section.9.8.p.9">A client <em class="bcp14">MUST NOT</em> assume that just because the time-out has expired the lock has been lost.</p><h1 id="rfc.section.10"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.10">10.</a> <a id="status.code.extensions.to.http11" href="http://www.webdav.org/specs/rfc2518.html#status.code.extensions.to.http11">Status Code Extensions to HTTP/1.1</a></h1><p id="rfc.section.10.p.1">The following status codes are added to those defined in HTTP/1.1 <a href="http://www.webdav.org/specs/rfc2518.html#RFC2068" id="rfc.xref.RFC2068.16"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2068]</cite></a>.</p><div id="rfc.iref.44"></div><div id="rfc.iref.s.3"></div><h2 id="rfc.section.10.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.10.1">10.1</a> <a id="STATUS_102" href="http://www.webdav.org/specs/rfc2518.html#STATUS_102">102 Processing</a></h2><p id="rfc.section.10.1.p.1">The 102 (Processing) status code is an interim response used to inform the client that the server has accepted the complete request, but has not yet completed it. This status code <em class="bcp14">SHOULD</em> only be sent when the server has a reasonable expectation that the request will take significant time to complete. As guidance, if a method is taking longer than 20 seconds (a reasonable, but arbitrary value) to process the
|
|||
|
<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_locktoken">locktoken</a>?) >
|
|||
|
</pre><h3 id="rfc.section.12.1.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.1.1">12.1.1</a> <a id="ELEMENT_depth" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_depth">depth XML Element</a></h3><div id="rfc.iref.d.6"></div><dl><dt>Name:</dt><dd>depth</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>The value of the Depth header.</dd><dt>Value:</dt><dd>"0" | "1" | "infinity"</dd></dl><div id="rfc.figure.u.45"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_depth">depth</a> (#PCDATA) >
|
|||
|
</pre><h3 id="rfc.section.12.1.2"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.1.2">12.1.2</a> <a id="ELEMENT_locktoken" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_locktoken">locktoken XML Element</a></h3><div id="rfc.iref.l.4"></div><dl><dt>Name:</dt><dd>locktoken</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>The lock token associated with a lock.</dd><dt>Description:</dt><dd>The href contains one or more opaque lock token URIs which all refer to the same lock (i.e., the OpaqueLockToken-URI production in <a href="http://www.webdav.org/specs/rfc2518.html#opaquelocktoken.lock.token.uri.scheme" title="opaquelocktoken Lock Token URI Scheme">Section 6.4</a>).</dd></dl><div id="rfc.figure.u.46"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_locktoken">locktoken</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_href">href</a>+) >
|
|||
|
</pre><h3 id="rfc.section.12.1.3"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.1.3">12.1.3</a> <a id="ELEMENT_timeout" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_timeout">timeout XML Element</a></h3><div id="rfc.iref.t.2"></div><dl><dt>Name:</dt><dd>timeout</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>The timeout associated with a lock</dd><dt>Value:</dt><dd>TimeType ;Defined in <a href="http://www.webdav.org/specs/rfc2518.html#HEADER_Timeout" title="Timeout Request Header">Section 9.8</a></dd></dl><div id="rfc.figure.u.47"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_timeout">timeout</a> (#PCDATA) >
|
|||
|
</pre><h2 id="rfc.section.12.2"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.2">12.2</a> <a id="ELEMENT_collection" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_collection">collection XML Element</a></h2><div id="rfc.iref.d.7"></div><div id="rfc.iref.r.1"></div><dl><dt>Name:</dt><dd>collection</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Identifies the associated resource as a collection. The resourcetype property of a collection resource <em class="bcp14">MUST</em> have this value.</dd></dl><div id="rfc.figure.u.48"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_collection">collection</a> EMPTY >
|
|||
|
</pre><h2 id="rfc.section.12.3"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.3">12.3</a> <a id="ELEMENT_href" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_href">href XML Element</a></h2><div id="rfc.iref.h.9"></div><dl><dt>Name:</dt><dd>href</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Identifies the content of the element as a URI.</dd><dt>Value:</dt><dd>URI ; See section <a href="http://tools.ietf.org/html/rfc2068#section-3.2.1" id="rfc.xref.RFC2068.17">3.2.1</a> of <a href="http://www.webdav.org/specs/rfc2518.html#RFC2068" id="rfc.xref.RFC2068.18"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2068]</cite></a></dd></dl><div id="rfc.figure.u.49"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_href">href</a> (#PCDATA)>
|
|||
|
</pre><h2 id="rfc.section.12.4"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.4">12.4</a> <a id="ELEMENT_link" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_link">link XML Element</a></h2><div id="rfc.iref.l.5"></div><dl><dt>Name:</dt><dd>link</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Identifies the property as a link and contains the source and destination of that link.</dd><dt>Description:</dt><dd>The link XML element is used to provide the sources and destinations of a link. The name of the property containing the link XML element provides the type of the link. Link is a multi-valued element, so multiple links may be used together to indicate multiple links with the same type. The values in the href XML elements inside the src and dst XML elements of the link XML element <em class="bcp14">MUST NOT</em> be rejected if they point to resources which do not exist.</dd></dl><div id="rfc.figure.u.50"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_link">link</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_src">src</a>+, <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_dst">dst</a>+) >
|
|||
|
</pre><h3 id="rfc.section.12.4.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.4.1">12.4.1</a> <a id="ELEMENT_dst" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_dst">dst XML Element</a></h3><div id="rfc.iref.d.8"></div><dl><dt>Name:</dt><dd>dst</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Indicates the destination of a link</dd><dt>Value:</dt><dd>URI</dd></dl><div id="rfc.figure.u.51"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_dst">dst</a> (#PCDATA) >
|
|||
|
</pre><h3 id="rfc.section.12.4.2"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.4.2">12.4.2</a> <a id="ELEMENT_src" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_src">src XML Element</a></h3><div id="rfc.iref.s.10"></div><dl><dt>Name:</dt><dd>src</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Indicates the source of a link.</dd><dt>Value:</dt><dd>URI</dd></dl><div id="rfc.figure.u.52"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_src">src</a> (#PCDATA) >
|
|||
|
</pre><h2 id="rfc.section.12.5"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.5">12.5</a> <a id="ELEMENT_lockentry" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_lockentry">lockentry XML Element</a></h2><div id="rfc.iref.l.6"></div><dl><dt>Name:</dt><dd>lockentry</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Defines the types of locks that can be used with the resource.</dd></dl><div id="rfc.figure.u.53"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_lockentry">lockentry</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_lockscope">lockscope</a>, <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_locktype">locktype</a>) >
|
|||
|
</pre><h2 id="rfc.section.12.6"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.6">12.6</a> <a id="ELEMENT_lockinfo" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_lockinfo">lockinfo XML Element</a></h2><div id="rfc.iref.l.7"></div><dl><dt>Name:</dt><dd>lockinfo</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>The lockinfo XML element is used with a LOCK method to specify the type of lock the client wishes to have created.</dd></dl><div id="rfc.figure.u.54"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_lockinfo">lockinfo</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_lockscope">lockscope</a>, <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_locktype">locktype</a>, <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_owner">owner</a>?) >
|
|||
|
</pre><h2 id="rfc.section.12.7"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.7">12.7</a> <a id="ELEMENT_lockscope" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_lockscope">lockscope XML Element</a></h2><div id="rfc.iref.l.8"></div><dl><dt>Name:</dt><dd>lockscope</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Specifies whether a lock is an exclusive lock, or a shared lock.</dd></dl><div id="rfc.figure.u.55"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_lockscope">lockscope</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_exclusive">exclusive</a> | <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_shared">shared</a>) >
|
|||
|
</pre><h3 id="rfc.section.12.7.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.7.1">12.7.1</a> <a id="ELEMENT_exclusive" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_exclusive">exclusive XML Element</a></h3><div id="rfc.iref.e.1"></div><dl><dt>Name:</dt><dd>exclusive</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Specifies an exclusive lock</dd></dl><div id="rfc.figure.u.56"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_exclusive">exclusive</a> EMPTY >
|
|||
|
</pre><h3 id="rfc.section.12.7.2"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.7.2">12.7.2</a> <a id="ELEMENT_shared" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_shared">shared XML Element</a></h3><div id="rfc.iref.s.11"></div><dl><dt>Name:</dt><dd>shared</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Specifies a shared lock</dd></dl><div id="rfc.figure.u.57"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_shared">shared</a> EMPTY >
|
|||
|
</pre><h2 id="rfc.section.12.8"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.8">12.8</a> <a id="ELEMENT_locktype" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_locktype">locktype XML Element</a></h2><div id="rfc.iref.l.9"></div><dl><dt>Name:</dt><dd>locktype</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Specifies the access type of a lock. At present, this specification only defines one lock type, the write lock.</dd></dl><div id="rfc.figure.u.58"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_locktype">locktype</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_write">write</a>) >
|
|||
|
</pre><h3 id="rfc.section.12.8.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.8.1">12.8.1</a> <a id="ELEMENT_write" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_write">write XML Element</a></h3><div id="rfc.iref.w.1"></div><dl><dt>Name:</dt><dd>write</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Specifies a write lock.</dd></dl><div id="rfc.figure.u.59"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_write">write</a> EMPTY >
|
|||
|
</pre><h2 id="rfc.section.12.9"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.9">12.9</a> <a id="ELEMENT_multistatus" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_multistatus">multistatus XML Element</a></h2><div id="rfc.iref.m.13"></div><dl><dt>Name:</dt><dd>multistatus</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Contains multiple response messages.</dd><dt>Description:</dt><dd>The responsedescription at the top level is used to provide a general message describing the overarching nature of the response. If this value is available an application may use it instead of presenting the individual response descriptions contained within the responses.</dd></dl><div id="rfc.figure.u.60"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_multistatus">multistatus</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_response">response</a>+, <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_responsedescription">responsedescription</a>?) >
|
|||
|
</pre><h3 id="rfc.section.12.9.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.9.1">12.9.1</a> <a id="ELEMENT_response" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_response">response XML Element</a></h3><div id="rfc.iref.r.2"></div><dl><dt>Name:</dt><dd>response</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Holds a single response describing the effect of a method on resource and/or its properties.</dd><dt>Description:</dt><dd>A particular href <em class="bcp14">MUST NOT</em> appear more than once as the child of a response XML element under a multistatus XML element. This requirement is necessary in order to keep processing costs for a response to linear time. Essentially, this prevents having to search in order to group together all the responses by href. There are, however, no requirements regarding ordering based on href values.</dd></dl><div id="rfc.figure.u.61"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_response">response</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_href">href</a>, ((<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_href">href</a>*, <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_status">status</a>)|(<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_propstat">propstat</a>+)),
|
|||
|
<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_responsedescription">responsedescription</a>?) >
|
|||
|
</pre><h4 id="rfc.section.12.9.1.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.9.1.1">12.9.1.1</a> <a id="ELEMENT_propstat" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_propstat">propstat XML Element</a></h4><div id="rfc.iref.p.5"></div><dl><dt>Name:</dt><dd>propstat</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Groups together a prop and status element that is associated with a particular href element.</dd><dt>Description:</dt><dd>The propstat XML element <em class="bcp14">MUST</em> contain one prop XML element and one status XML element. The contents of the prop XML element <em class="bcp14">MUST</em> only list the names of properties to which the result in the status element applies.</dd></dl><div id="rfc.figure.u.62"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_propstat">propstat</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_prop">prop</a>, <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_status">status</a>, <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_responsedescription">responsedescription</a>?) >
|
|||
|
</pre><h4 id="rfc.section.12.9.1.2"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.9.1.2">12.9.1.2</a> <a id="ELEMENT_status" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_status">status XML Element</a></h4><div id="rfc.iref.s.12"></div><dl><dt>Name:</dt><dd>status</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Holds a single HTTP status-line</dd><dt>Value:</dt><dd>status-line ;status-line defined in <a href="http://www.webdav.org/specs/rfc2518.html#RFC2068" id="rfc.xref.RFC2068.19"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2068]</cite></a></dd></dl><div id="rfc.figure.u.63"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_status">status</a> (#PCDATA) >
|
|||
|
</pre><h3 id="rfc.section.12.9.2"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.9.2">12.9.2</a> <a id="ELEMENT_responsedescription" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_responsedescription">responsedescription XML Element</a></h3><div id="rfc.iref.r.3"></div><dl><dt>Name:</dt><dd>responsedescription</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Contains a message that can be displayed to the user explaining the nature of the response.</dd><dt>Description:</dt><dd>This XML element provides information suitable to be presented to a user.</dd></dl><div id="rfc.figure.u.64"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_responsedescription">responsedescription</a> (#PCDATA) >
|
|||
|
</pre><h2 id="rfc.section.12.10"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.10">12.10</a> <a id="ELEMENT_owner" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_owner">owner XML Element</a></h2><div id="rfc.iref.o.2"></div><dl><dt>Name:</dt><dd>owner</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Provides information about the principal taking out a lock.</dd><dt>Description:</dt><dd>The owner XML element provides information sufficient for either directly contacting a principal (such as a telephone number or Email URI), or for discovering the principal (such as the URL of a homepage) who owns a lock.</dd></dl><div id="rfc.figure.u.65"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_owner">owner</a> ANY>
|
|||
|
</pre><h2 id="rfc.section.12.11"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.11">12.11</a> <a id="ELEMENT_prop" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_prop">prop XML element</a></h2><div id="rfc.iref.p.6"></div><dl><dt>Name:</dt><dd>prop</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Contains properties related to a resource.</dd><dt>Description:</dt><dd>The prop XML element is a generic container for properties defined on resources. All elements inside a prop XML element <em class="bcp14">MUST</em> define properties related to the resource. No other elements may be used inside of a prop element.</dd></dl><div id="rfc.figure.u.66"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_prop">prop</a> ANY>
|
|||
|
</pre><h2 id="rfc.section.12.12"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.12">12.12</a> <a id="ELEMENT_propertybehaviour" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_propertybehaviour">propertybehavior XML element</a></h2><div id="rfc.iref.p.7"></div><dl><dt>Name:</dt><dd>propertybehavior</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Specifies how properties are handled during a COPY or MOVE.</dd><dt>Description:</dt><dd>The propertybehavior XML element specifies how properties are handled during a COPY or MOVE. If this XML element is not included in the request body then the server is expected to act as defined by the default property handling behavior of the associated method. All WebDAV compliant resources <em class="bcp14">MUST</em> support the propertybehavior XML element.</dd></dl><div id="rfc.figure.u.67"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_propertybehaviour">propertybehavior</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_omit">omit</a> | <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_keepalive">keepalive</a>) >
|
|||
|
</pre><h3 id="rfc.section.12.12.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.12.1">12.12.1</a> <a id="ELEMENT_keepalive" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_keepalive">keepalive XML element</a></h3><div id="rfc.iref.k.1"></div><dl><dt>Name:</dt><dd>keepalive</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Specifies requirements for the copying/moving of live properties.</dd><dt>Description:</dt><dd>If a list of URIs is included as the value of keepalive then the named properties <em class="bcp14">MUST</em> be "live" after they are copied (moved) to the destination resource of a COPY (or MOVE). If the value "*" is given for the keepalive XML element, this designates that all live properties on the source resource <em class="bcp14">MUST</em> be live on the destination. If the requirements specified by the keepalive element can not be honored then the method <em class="bcp14">MUST</em> fail with a 412 (Precondition Failed). All DAV compliant resources <em class="bcp14">MUST</em> support the keepalive XML element for use with the COPY and MOVE methods.</dd><dt>Value:</dt><dd>"*" ; #PCDATA value can only be "*"</dd></dl><div id="rfc.figure.u.68"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_keepalive">keepalive</a> (#PCDATA | <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_href">href</a>+) >
|
|||
|
</pre><h3 id="rfc.section.12.12.2"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.12.2">12.12.2</a> <a id="ELEMENT_omit" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_omit">omit XML element</a></h3><div id="rfc.iref.o.3"></div><dl><dt>Name:</dt><dd>omit</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>The omit XML element instructs the server that it should use best effort to copy properties but a failure to copy a property <em class="bcp14">MUST NOT</em> cause the method to fail.</dd><dt>Description:</dt><dd>The default behavior for a COPY or MOVE is to copy/move all properties or fail the method. In certain circumstances, such as when a server copies a resource over another protocol such as FTP, it may not be possible to copy/move the properties associated with the resource. Thus any attempt to copy/move over FTP would always have to fail because properties could not be moved over, even as dead properties. All DAV compliant resources <em class="bcp14">MUST</em> support the omit XML element on COPY/MOVE methods.</dd></dl><div id="rfc.figure.u.69"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_omit">omit</a> EMPTY >
|
|||
|
</pre><h2 id="rfc.section.12.13"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.13">12.13</a> <a id="ELEMENT_propertyupdate" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_propertyupdate">propertyupdate XML element</a></h2><div id="rfc.iref.p.8"></div><dl><dt>Name:</dt><dd>propertyupdate</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Contains a request to alter the properties on a resource.</dd><dt>Description:</dt><dd>This XML element is a container for the information required to modify the properties on the resource. This XML element is multi-valued.</dd></dl><div id="rfc.figure.u.70"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_propertyupdate">propertyupdate</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_remove">remove</a> | <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_set">set</a>)+ >
|
|||
|
</pre><h3 id="rfc.section.12.13.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.13.1">12.13.1</a> <a id="ELEMENT_remove" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_remove">remove XML element</a></h3><div id="rfc.iref.r.4"></div><dl><dt>Name:</dt><dd>remove</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Lists the DAV properties to be removed from a resource.</dd><dt>Description:</dt><dd>Remove instructs that the properties specified in prop should be removed. Specifying the removal of a property that does not exist is not an error. All the XML elements in a prop XML element inside of a remove XML element <em class="bcp14">MUST</em> be empty, as only the names of properties to be removed are required.</dd></dl><div id="rfc.figure.u.71"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_remove">remove</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_prop">prop</a>) >
|
|||
|
</pre><h3 id="rfc.section.12.13.2"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.13.2">12.13.2</a> <a id="ELEMENT_set" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_set">set XML element</a></h3><div id="rfc.iref.s.13"></div><dl><dt>Name:</dt><dd>set</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Lists the DAV property values to be set for a resource.</dd><dt>Description:</dt><dd>The set XML element <em class="bcp14">MUST</em> contain only a prop XML element. The elements contained by the prop XML element inside the set XML element <em class="bcp14">MUST</em> specify the name and value of properties that are set on the resource identified by Request-URI. If a property already exists then its value is replaced. Language tagging information in the property's value (in the "xml:lang" attribute, if present) <em class="bcp14">MUST</em> be persistently stored along with the property, and <em class="bcp14">MUST</em> be subsequently retrievable using PROPFIND.</dd></dl><div id="rfc.figure.u.72"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_set">set</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_prop">prop</a>) >
|
|||
|
</pre><h2 id="rfc.section.12.14"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.14">12.14</a> <a id="ELEMENT_propfind" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_propfind">propfind XML Element</a></h2><div id="rfc.iref.p.9"></div><dl><dt>Name:</dt><dd>propfind</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Specifies the properties to be returned from a PROPFIND method. Two special elements are specified for use with propfind, allprop and propname. If prop is used inside propfind it <em class="bcp14">MUST</em> only contain property names, not values.</dd></dl><div id="rfc.figure.u.73"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_propfind">propfind</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_allprop">allprop</a> | <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_propname">propname</a> | <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_prop">prop</a>) >
|
|||
|
</pre><h3 id="rfc.section.12.14.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.14.1">12.14.1</a> <a id="ELEMENT_allprop" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_allprop">allprop XML Element</a></h3><div id="rfc.iref.a.2"></div><dl><dt>Name:</dt><dd>allprop</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>The allprop XML element specifies that all property names and values on the resource are to be returned.</dd></dl><div id="rfc.figure.u.74"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_allprop">allprop</a> EMPTY >
|
|||
|
</pre><h3 id="rfc.section.12.14.2"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.12.14.2">12.14.2</a> <a id="ELEMENT_propname" href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_propname">propname XML Element</a></h3><div id="rfc.iref.p.10"></div><dl><dt>Name:</dt><dd>propname</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>The propname XML element specifies that only a list of property names on the resource is to be returned.</dd></dl><div id="rfc.figure.u.75"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_propname">propname</a> EMPTY >
|
|||
|
</pre><h1 id="rfc.section.13"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.13">13.</a> <a id="dav.properties" href="http://www.webdav.org/specs/rfc2518.html#dav.properties">DAV Properties</a></h1><p id="rfc.section.13.p.1">For DAV properties, the name of the property is also the same as the name of the XML element that contains its value. In the section below, the final line of each section gives the element type declaration using the format defined in <a href="http://www.webdav.org/specs/rfc2518.html#REC-XML" id="rfc.xref.REC-XML.4"><cite title="Extensible Markup Language (XML) 1.0">[REC-XML]</cite></a>. The "Value" field, where present, specifies further restrictions on the allowable contents of the XML element using BNF (i.e., to further restrict the values of a PCDATA element).</p><h2 id="rfc.section.13.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.13.1">13.1</a> <a id="PROPERTY_creationdate" href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_creationdate">creationdate Property</a></h2><div id="rfc.iref.d.9"></div><div id="rfc.iref.p.11"></div><dl><dt>Name:</dt><dd>creationdate</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Records the time and date the resource was created.</dd><dt>Value:</dt><dd>date-time ; See <a href="http://www.webdav.org/specs/rfc2518.html#iso.8601.date.and.time.profile" title="Appendix 2 - ISO 8601 Date and Time Profile">Appendix 23.2</a></dd><dt>Description:</dt><dd>The creationdate property should be defined on all DAV compliant resources. If present, it contains a timestamp of the moment when the resource was created (i.e., the moment it had non-null state).</dd></dl><div id="rfc.figure.u.76"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_creationdate">creationdate</a> (#PCDATA) >
|
|||
|
</pre><h2 id="rfc.section.13.2"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.13.2">13.2</a> <a id="PROPERTY_displayname" href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_displayname">displayname Property</a></h2><div id="rfc.iref.d.10"></div><div id="rfc.iref.p.12"></div><dl><dt>Name:</dt><dd>displayname</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Provides a name for the resource that is suitable for presentation to a user.</dd><dt>Description:</dt><dd>The displayname property should be defined on all DAV compliant resources. If present, the property contains a description of the resource that is suitable for presentation to a user.</dd></dl><div id="rfc.figure.u.77"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_displayname">displayname</a> (#PCDATA) >
|
|||
|
</pre><h2 id="rfc.section.13.3"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.13.3">13.3</a> <a id="PROPERTY_getcontentlanguage" href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_getcontentlanguage">getcontentlanguage Property</a></h2><div id="rfc.iref.d.11"></div><div id="rfc.iref.p.13"></div><dl><dt>Name:</dt><dd>getcontentlanguage</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Contains the Content-Language header returned by a GET without accept headers</dd><dt>Description:</dt><dd>The getcontentlanguage property <em class="bcp14">MUST</em> be defined on any DAV compliant resource that returns the Content-Language header on a GET.</dd><dt>Value:</dt><dd>language-tag ;language-tag is defined in section <a href="http://tools.ietf.org/html/rfc2068#section-14.13" id="rfc.xref.RFC2068.20">14.13</a> of <a href="http://www.webdav.org/specs/rfc2518.html#RFC2068" id="rfc.xref.RFC2068.21"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2068]</cite></a></dd></dl><div id="rfc.figure.u.78"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_getcontentlanguage">getcontentlanguage</a> (#PCDATA) >
|
|||
|
</pre><h2 id="rfc.section.13.4"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.13.4">13.4</a> <a id="PROPERTY_getcontentlength" href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_getcontentlength">getcontentlength Property</a></h2><div id="rfc.iref.d.12"></div><div id="rfc.iref.p.14"></div><dl><dt>Name:</dt><dd>getcontentlength</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Contains the Content-Length header returned by a GET without accept headers.</dd><dt>Description:</dt><dd>The getcontentlength property <em class="bcp14">MUST</em> be defined on any DAV compliant resource that returns the Content-Length header in response to a GET.</dd><dt>Value:</dt><dd>content-length ; see section <a href="http://tools.ietf.org/html/rfc2068#section-14.14" id="rfc.xref.RFC2068.22">14.14</a> of <a href="http://www.webdav.org/specs/rfc2518.html#RFC2068" id="rfc.xref.RFC2068.23"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2068]</cite></a></dd></dl><div id="rfc.figure.u.79"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_getcontentlength">getcontentlength</a> (#PCDATA) >
|
|||
|
</pre><h2 id="rfc.section.13.5"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.13.5">13.5</a> <a id="PROPERTY_getcontenttype" href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_getcontenttype">getcontenttype Property</a></h2><div id="rfc.iref.d.13"></div><div id="rfc.iref.p.15"></div><dl><dt>Name:</dt><dd>getcontenttype</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Contains the Content-Type header returned by a GET without accept headers.</dd><dt>Description:</dt><dd>This getcontenttype property <em class="bcp14">MUST</em> be defined on any DAV compliant resource that returns the Content-Type header in response to a GET.</dd><dt>Value:</dt><dd>media-type ; defined in section <a href="http://tools.ietf.org/html/rfc2068#section-3.7" id="rfc.xref.RFC2068.24">3.7</a> of <a href="http://www.webdav.org/specs/rfc2518.html#RFC2068" id="rfc.xref.RFC2068.25"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2068]</cite></a></dd></dl><div id="rfc.figure.u.80"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_getcontenttype">getcontenttype</a> (#PCDATA) >
|
|||
|
</pre><h2 id="rfc.section.13.6"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.13.6">13.6</a> <a id="PROPERTY_getetag" href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_getetag">getetag Property</a></h2><div id="rfc.iref.d.14"></div><div id="rfc.iref.p.16"></div><dl><dt>Name:</dt><dd>getetag</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Contains the ETag header returned by a GET without accept headers.</dd><dt>Description:</dt><dd>The getetag property <em class="bcp14">MUST</em> be defined on any DAV compliant resource that returns the Etag header.</dd><dt>Value:</dt><dd>entity-tag ; defined in section <a href="http://tools.ietf.org/html/rfc2068#section-3.11" id="rfc.xref.RFC2068.26">3.11</a> of <a href="http://www.webdav.org/specs/rfc2518.html#RFC2068" id="rfc.xref.RFC2068.27"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2068]</cite></a></dd></dl><div id="rfc.figure.u.81"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_getetag">getetag</a> (#PCDATA) >
|
|||
|
</pre><h2 id="rfc.section.13.7"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.13.7">13.7</a> <a id="PROPERTY_getlastmodified" href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_getlastmodified">getlastmodified Property</a></h2><div id="rfc.iref.d.15"></div><div id="rfc.iref.p.17"></div><dl><dt>Name:</dt><dd>getlastmodified</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Contains the Last-Modified header returned by a GET method without accept headers.</dd><dt>Description:</dt><dd>Note that the last-modified date on a resource may reflect changes in any part of the state of the resource, not necessarily just a change to the response to the GET method. For example, a change in a property may cause the last-modified date to change. The getlastmodified property <em class="bcp14">MUST</em> be defined on any DAV compliant resource that returns the Last-Modified header in response to a GET.</dd><dt>Value:</dt><dd>HTTP-date ; defined in section <a href="http://tools.ietf.org/html/rfc2068#section-3.3.1" id="rfc.xref.RFC2068.28">3.3.1</a> of <a href="http://www.webdav.org/specs/rfc2518.html#RFC2068" id="rfc.xref.RFC2068.29"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2068]</cite></a></dd></dl><div id="rfc.figure.u.82"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_getlastmodified">getlastmodified</a> (#PCDATA) >
|
|||
|
</pre><h2 id="rfc.section.13.8"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.13.8">13.8</a> <a id="PROPERTY_lockdiscovery" href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_lockdiscovery">lockdiscovery Property</a></h2><div id="rfc.iref.d.16"></div><div id="rfc.iref.p.18"></div><dl><dt>Name:</dt><dd>lockdiscovery</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Describes the active locks on a resource</dd><dt>Description:</dt><dd>The lockdiscovery property returns a listing of who has a lock, what type of lock he has, the timeout type and the time remaining on the timeout, and the associated lock token. The server is free to withhold any or all of this information if the requesting principal does not have sufficient access rights to see the requested data.</dd></dl><div id="rfc.figure.u.83"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_lockdiscovery">lockdiscovery</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_activelock">activelock</a>)* >
|
|||
|
</pre><h3 id="rfc.section.13.8.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.13.8.1">13.8.1</a> Example - Retrieving the lockdiscovery Property</h3><div id="rfc.figure.u.84"></div><p>>>Request</p><pre class="text2"> PROPFIND /container/ HTTP/1.1
|
|||
|
Host: www.foo.bar
|
|||
|
Content-Length: xxxx
|
|||
|
Content-Type: text/xml; charset="utf-8"
|
|||
|
|
|||
|
<?xml version="1.0" encoding="utf-8" ?>
|
|||
|
<D:propfind xmlns:D='DAV:'>
|
|||
|
<D:prop><D:lockdiscovery/></D:prop>
|
|||
|
</D:propfind>
|
|||
|
</pre><div id="rfc.figure.u.85"></div><p>>>Response</p><pre class="text"> HTTP/1.1 207 Multi-Status
|
|||
|
Content-Type: text/xml; charset="utf-8"
|
|||
|
Content-Length: xxxx
|
|||
|
|
|||
|
<?xml version="1.0" encoding="utf-8" ?>
|
|||
|
<D:multistatus xmlns:D='DAV:'>
|
|||
|
<D:response>
|
|||
|
<D:href>http://www.foo.bar/container/</D:href>
|
|||
|
<D:propstat>
|
|||
|
<D:prop>
|
|||
|
<D:lockdiscovery>
|
|||
|
<D:activelock>
|
|||
|
<D:locktype><D:write/></D:locktype>
|
|||
|
<D:lockscope><D:exclusive/></D:lockscope>
|
|||
|
<D:depth>0</D:depth>
|
|||
|
<D:owner>Jane Smith</D:owner>
|
|||
|
<D:timeout>Infinite</D:timeout>
|
|||
|
<D:locktoken>
|
|||
|
<D:href>
|
|||
|
opaquelocktoken:f81de2ad-7f3d-a1b2-4f3c-00a0c91a9d76
|
|||
|
</D:href>
|
|||
|
</D:locktoken>
|
|||
|
</D:activelock>
|
|||
|
</D:lockdiscovery>
|
|||
|
</D:prop>
|
|||
|
<D:status>HTTP/1.1 200 OK</D:status>
|
|||
|
</D:propstat>
|
|||
|
</D:response>
|
|||
|
</D:multistatus>
|
|||
|
</pre><p id="rfc.section.13.8.1.p.3">This resource has a single exclusive write lock on it, with an infinite timeout.</p><h2 id="rfc.section.13.9"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.13.9">13.9</a> <a id="PROPERTY_resourcetype" href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_resourcetype">resourcetype Property</a></h2><div id="rfc.iref.d.17"></div><div id="rfc.iref.p.19"></div><dl><dt>Name:</dt><dd>resourcetype</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>Specifies the nature of the resource.</dd><dt>Description:</dt><dd>The resourcetype property <em class="bcp14">MUST</em> be defined on all DAV compliant resources. The default value is empty.</dd></dl><div id="rfc.figure.u.86"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_resourcetype">resourcetype</a> ANY >
|
|||
|
</pre><h2 id="rfc.section.13.10"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.13.10">13.10</a> <a id="PROPERTY_source" href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_source">source Property</a></h2><div id="rfc.iref.d.18"></div><div id="rfc.iref.p.20"></div><dl><dt>Name:</dt><dd>source</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>The destination of the source link identifies the resource that contains the unprocessed source of the link's source.</dd><dt>Description:</dt><dd>The source of the link (src) is typically the URI of the output resource on which the link is defined, and there is typically only one destination (dst) of the link, which is the URI where the unprocessed source of the resource may be accessed. When more than one link destination exists, this specification asserts no policy on ordering.</dd></dl><div id="rfc.figure.u.87"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_source">source</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_link">link</a>)* >
|
|||
|
</pre><h3 id="rfc.section.13.10.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.13.10.1">13.10.1</a> Example - A source Property</h3><div id="rfc.figure.u.88"></div><pre class="text"> <?xml version="1.0" encoding="utf-8" ?>
|
|||
|
<D:prop xmlns:D="DAV:" xmlns:F="http://www.foocorp.com/Project/">
|
|||
|
<D:source>
|
|||
|
<D:link>
|
|||
|
<F:projfiles>Source</F:projfiles>
|
|||
|
<D:src>http://foo.bar/program</D:src>
|
|||
|
<D:dst>http://foo.bar/src/main.c</D:dst>
|
|||
|
</D:link>
|
|||
|
<D:link>
|
|||
|
<F:projfiles>Library</F:projfiles>
|
|||
|
<D:src>http://foo.bar/program</D:src>
|
|||
|
<D:dst>http://foo.bar/src/main.lib</D:dst>
|
|||
|
</D:link>
|
|||
|
<D:link>
|
|||
|
<F:projfiles>Makefile</F:projfiles>
|
|||
|
<D:src>http://foo.bar/program</D:src>
|
|||
|
<D:dst>http://foo.bar/src/makefile</D:dst>
|
|||
|
</D:link>
|
|||
|
</D:source>
|
|||
|
</D:prop>
|
|||
|
</pre><p id="rfc.section.13.10.1.p.2">In this example the resource http://foo.bar/program has a source property that contains three links. Each link contains three elements, two of which, src and dst, are part of the DAV schema defined in this document, and one which is defined by the schema http://www.foocorp.com/project/ (Source, Library, and Makefile). A client which only implements the elements in the DAV spec will not understand the foocorp elements and will ignore them, thus seeing the expected source and destination links. An enhanced client may know about the foocorp elements and be able to present the user with additional information about the links. This example demonstrates the power of XML markup, allowing element values to be enhanced without breaking older clients.</p><h2 id="rfc.section.13.11"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.13.11">13.11</a> <a id="PROPERTY_supportedlock" href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_supportedlock">supportedlock Property</a></h2><div id="rfc.iref.d.19"></div><div id="rfc.iref.p.21"></div><dl><dt>Name:</dt><dd>supportedlock</dd><dt>Namespace:</dt><dd>DAV:</dd><dt>Purpose:</dt><dd>To provide a listing of the lock capabilities supported by the resource.</dd><dt>Description:</dt><dd>The supportedlock property of a resource returns a listing of the combinations of scope and access types which may be specified in a lock request on the resource. Note that the actual contents are themselves controlled by access controls so a server is not required to provide information the client is not authorized to see.</dd></dl><div id="rfc.figure.u.89"></div><pre class="inline"> <!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_supportedlock">supportedlock</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_lockentry">lockentry</a>)* >
|
|||
|
</pre><h3 id="rfc.section.13.11.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.13.11.1">13.11.1</a> Example - Retrieving the supportedlock Property</h3><div id="rfc.figure.u.90"></div><p>>>Request</p><pre class="text2"> PROPFIND /container/ HTTP/1.1
|
|||
|
Host: www.foo.bar
|
|||
|
Content-Length: xxxx
|
|||
|
Content-Type: text/xml; charset="utf-8"
|
|||
|
|
|||
|
<?xml version="1.0" encoding="utf-8" ?>
|
|||
|
<D:propfind xmlns:D="DAV:">
|
|||
|
<D:prop><D:supportedlock/></D:prop>
|
|||
|
</D:propfind>
|
|||
|
</pre><div id="rfc.figure.u.91"></div><p>>>Response</p><pre class="text"> HTTP/1.1 207 Multi-Status
|
|||
|
Content-Type: text/xml; charset="utf-8"
|
|||
|
Content-Length: xxxx
|
|||
|
|
|||
|
<?xml version="1.0" encoding="utf-8" ?>
|
|||
|
<D:multistatus xmlns:D="DAV:">
|
|||
|
<D:response>
|
|||
|
<D:href>http://www.foo.bar/container/</D:href>
|
|||
|
<D:propstat>
|
|||
|
<D:prop>
|
|||
|
<D:supportedlock>
|
|||
|
<D:lockentry>
|
|||
|
<D:lockscope><D:exclusive/></D:lockscope>
|
|||
|
<D:locktype><D:write/></D:locktype>
|
|||
|
</D:lockentry>
|
|||
|
<D:lockentry>
|
|||
|
<D:lockscope><D:shared/></D:lockscope>
|
|||
|
<D:locktype><D:write/></D:locktype>
|
|||
|
</D:lockentry>
|
|||
|
</D:supportedlock>
|
|||
|
</D:prop>
|
|||
|
<D:status>HTTP/1.1 200 OK</D:status>
|
|||
|
</D:propstat>
|
|||
|
</D:response>
|
|||
|
</D:multistatus>
|
|||
|
</pre><h1 id="rfc.section.14"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.14">14.</a> <a id="instructions.for.processing.xml.in.dav" href="http://www.webdav.org/specs/rfc2518.html#instructions.for.processing.xml.in.dav">Instructions for Processing XML in DAV</a></h1><p id="rfc.section.14.p.1">All DAV compliant resources <em class="bcp14">MUST</em> ignore any unknown XML element and all its children encountered while processing a DAV method that uses XML as its command language.</p><p id="rfc.section.14.p.2">This restriction also applies to the processing, by clients, of DAV property values where unknown XML elements <em class="bcp14">SHOULD</em> be ignored unless the property's schema declares otherwise.</p><p id="rfc.section.14.p.3">This restriction does not apply to setting dead DAV properties on the server where the server <em class="bcp14">MUST</em> record unknown XML elements.</p><p id="rfc.section.14.p.4">Additionally, this restriction does not apply to the use of XML where XML happens to be the content type of the entity body, for example, when used as the body of a PUT.</p><p id="rfc.section.14.p.5">Since XML can be transported as text/xml or application/xml, a DAV server <em class="bcp14">MUST</em> accept DAV method requests with XML parameters transported as either text/xml or application/xml, and DAV client <em class="bcp14">MUST</em> accept XML responses using either text/xml or application/xml.</p><h1 id="rfc.section.15"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.15">15.</a> <a id="dav.compliance.classes" href="http://www.webdav.org/specs/rfc2518.html#dav.compliance.classes">DAV Compliance Classes</a></h1><p id="rfc.section.15.p.1">A DAV compliant resource can choose from two classes of compliance. A client can discover the compliance classes of a resource by executing OPTIONS on the resource, and examining the "DAV" header which is returned.</p><p id="rfc.section.15.p.2">Since this document describes extensions to the HTTP/1.1 protocol, minimally all DAV compliant resources, clients, and proxies <em class="bcp14">MUST</em> be compliant with <a href="http://www.webdav.org/specs/rfc2518.html#RFC2068" id="rfc.xref.RFC2068.30"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2068]</cite></a>.</p><p id="rfc.section.15.p.3">Compliance classes are not necessarily sequential. A resource that is class 2 compliant must also be class 1 compliant; but if additional compliance classes are defined later, a resource that is class 1, 2, and 4 compliant might not be class 3 compliant. Also note that identifiers other than numbers may be used as compliance class identifiers.</p><div id="rfc.iref.d.20"></div><h2 id="rfc.section.15.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.15.1">15.1</a> Class 1</h2><p id="rfc.section.15.1.p.1">A class 1 compliant resource <em class="bcp14">MUST</em> meet all "MUST" requirements in all sections of this document.</p><p id="rfc.section.15.1.p.2">Class 1 compliant resources <em class="bcp14">MUST</em> return, at minimum, the value "1" in the DAV header on all responses to the OPTIONS method.</p><div id="rfc.iref.d.21"></div><h2 id="rfc.section.15.2"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.15.2">15.2</a> Class 2</h2><p id="rfc.section.15.2.p.1">A class 2 compliant resource <em class="bcp14">MUST</em> meet all class 1 requirements and support the LOCK method, the supportedlock property, the lockdiscovery property, the Time-Out response header and the Lock-Token request header. A class "2" compliant resource <em class="bcp14">SHOULD</em> also support the Time-Out request header and the owner XML element.</p><p id="rfc.section.15.2.p.2">Class 2 compliant resources <em class="bcp14">MUST</em> return, at minimum, the values "1" and "2" in the DAV header on all responses to the OPTIONS method.</p><h1 id="rfc.section.16"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.16">16.</a> <a id="internationalization.considerations" href="http://www.webdav.org/specs/rfc2518.html#intern
|
|||
|
|
|||
|
<!--============ XML Elements from <a href="http://www.webdav.org/specs/rfc2518.html#xml.element.definitions" title="XML Element Definitions">Section 12</a> ==================-->
|
|||
|
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_activelock">activelock</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_lockscope">lockscope</a>, <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_locktype">locktype</a>, <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_depth">depth</a>, <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_owner">owner</a>?, <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_timeout">timeout</a>?,
|
|||
|
<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_locktoken">locktoken</a>?) >
|
|||
|
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_lockentry">lockentry</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_lockscope">lockscope</a>, <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_locktype">locktype</a>) >
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_lockinfo">lockinfo</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_lockscope">lockscope</a>, <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_locktype">locktype</a>, <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_owner">owner</a>?) >
|
|||
|
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_locktype">locktype</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_write">write</a>) >
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_write">write</a> EMPTY >
|
|||
|
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_lockscope">lockscope</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_exclusive">exclusive</a> | <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_shared">shared</a>) >
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_exclusive">exclusive</a> EMPTY >
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_shared">shared</a> EMPTY >
|
|||
|
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_depth">depth</a> (#PCDATA) >
|
|||
|
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_owner">owner</a> ANY >
|
|||
|
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_timeout">timeout</a> (#PCDATA) >
|
|||
|
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_locktoken">locktoken</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_href">href</a>+) >
|
|||
|
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_href">href</a> (#PCDATA) >
|
|||
|
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_link">link</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_src">src</a>+, <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_dst">dst</a>+) >
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_dst">dst</a> (#PCDATA) >
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_src">src</a> (#PCDATA) >
|
|||
|
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_multistatus">multistatus</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_response">response</a>+, <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_responsedescription">responsedescription</a>?) >
|
|||
|
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_response">response</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_href">href</a>, ((<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_href">href</a>*, <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_status">status</a>)|(<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_propstat">propstat</a>+)),
|
|||
|
<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_responsedescription">responsedescription</a>?) >
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_status">status</a> (#PCDATA) >
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_propstat">propstat</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_prop">prop</a>, <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_status">status</a>, <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_responsedescription">responsedescription</a>?) >
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_responsedescription">responsedescription</a> (#PCDATA) >
|
|||
|
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_prop">prop</a> ANY >
|
|||
|
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_propertybehaviour">propertybehavior</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_omit">omit</a> | <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_keepalive">keepalive</a>) >
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_omit">omit</a> EMPTY >
|
|||
|
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_keepalive">keepalive</a> (#PCDATA | <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_href">href</a>+) >
|
|||
|
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_propertyupdate">propertyupdate</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_remove">remove</a> | <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_set">set</a>)+ >
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_remove">remove</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_prop">prop</a>) >
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_set">set</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_prop">prop</a>) >
|
|||
|
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_propfind">propfind</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_allprop">allprop</a> | <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_propname">propname</a> | <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_prop">prop</a>) >
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_allprop">allprop</a> EMPTY >
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_propname">propname</a> EMPTY >
|
|||
|
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_collection">collection</a> EMPTY >
|
|||
|
|
|||
|
<!--=========== Property Elements from <a href="http://www.webdav.org/specs/rfc2518.html#dav.properties" title="DAV Properties">Section 13</a> ===============-->
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_creationdate">creationdate</a> (#PCDATA) >
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_displayname">displayname</a> (#PCDATA) >
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_getcontentlanguage">getcontentlanguage</a> (#PCDATA) >
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_getcontentlength">getcontentlength</a> (#PCDATA) >
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_getcontenttype">getcontenttype</a> (#PCDATA) >
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_getetag">getetag</a> (#PCDATA) >
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_getlastmodified">getlastmodified</a> (#PCDATA) >
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_lockdiscovery">lockdiscovery</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_activelock">activelock</a>)* >
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_resourcetype">resourcetype</a> ANY >
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_source">source</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_link">link</a>)* >
|
|||
|
<!ELEMENT <a href="http://www.webdav.org/specs/rfc2518.html#PROPERTY_supportedlock">supportedlock</a> (<a href="http://www.webdav.org/specs/rfc2518.html#ELEMENT_lockentry">lockentry</a>)* >
|
|||
|
]>
|
|||
|
</pre><h2 id="rfc.section.23.2"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.23.2">23.2</a> <a id="iso.8601.date.and.time.profile" href="http://www.webdav.org/specs/rfc2518.html#iso.8601.date.and.time.profile">Appendix 2 - ISO 8601 Date and Time Profile</a></h2><p id="rfc.section.23.2.p.1">The creationdate property specifies the use of the ISO 8601 date format <a href="http://www.webdav.org/specs/rfc2518.html#ISO-8601" id="rfc.xref.ISO-8601.1"><cite title="ISO 8601, Data elements and interchange formats-Information interchange--Representation of dates and times">[ISO-8601]</cite></a>. This section defines a profile of the ISO 8601 date format for use with this specification. This profile is quoted from an Internet-Draft by Chris Newman, and is mentioned here to properly attribute his work.</p><div id="rfc.figure.u.93"></div><pre class="inline"> date-time = full-date "T" full-time
|
|||
|
|
|||
|
full-date = date-fullyear "-" date-month "-" date-mday
|
|||
|
full-time = partial-time time-offset
|
|||
|
|
|||
|
date-fullyear = 4DIGIT
|
|||
|
date-month = 2DIGIT ; 01-12
|
|||
|
date-mday = 2DIGIT ; 01-28, 01-29, 01-30, 01-31 based on
|
|||
|
month/year
|
|||
|
time-hour = 2DIGIT ; 00-23
|
|||
|
time-minute = 2DIGIT ; 00-59
|
|||
|
time-second = 2DIGIT ; 00-59, 00-60 based on leap second rules
|
|||
|
time-secfrac = "." 1*DIGIT
|
|||
|
time-numoffset = ("+" / "-") time-hour ":" time-minute
|
|||
|
time-offset = "Z" / time-numoffset
|
|||
|
|
|||
|
partial-time = time-hour ":" time-minute ":" time-second
|
|||
|
[time-secfrac]
|
|||
|
</pre><p id="rfc.section.23.2.p.3">Numeric offsets are calculated as local time minus UTC (Coordinated Universal Time). So the equivalent time in UTC can be determined by subtracting the offset from the local time. For example, 18:50:00-04:00 is the same time as 22:58:00Z.</p><p id="rfc.section.23.2.p.4">If the time in UTC is known, but the offset to local time is unknown, this can be represented with an offset of "-00:00". This differs from an offset of "Z" which implies that UTC is the preferred reference point for the specified time.</p><h2 id="rfc.section.23.3"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.23.3">23.3</a> Appendix 3 - Notes on Processing XML Elements</h2><h3 id="rfc.section.23.3.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.23.3.1">23.3.1</a> Notes on Empty XML Elements</h3><p id="rfc.section.23.3.1.p.1">XML supports two mechanisms for indicating that an XML element does not have any content. The first is to declare an XML element of the form <A></A>. The second is to declare an XML element of the form <A/>. The two XML elements are semantically identical.</p><p id="rfc.section.23.3.1.p.2">It is a violation of the XML specification to use the <A></A> form if the associated DTD declares the element to be EMPTY (e.g., <!ELEMENT A EMPTY>). If such a statement is included, then the empty element format, <A/> must be used. If the element is not declared to be EMPTY, then either form <A></A> or <A/> may be used for empty elements.</p><h3 id="rfc.section.23.3.2"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.23.3.2">23.3.2</a> Notes on Illegal XML Processing</h3><p id="rfc.section.23.3.2.p.1">XML is a flexible data format that makes it easy to submit data that appears legal but in fact is not. The philosophy of "Be flexible in what you accept and strict in what you send" still applies, but it must not be applied inappropriately. XML is extremely flexible in dealing with issues of white space, element ordering, inserting new elements, etc. This flexibility does not require extension, especially not in the area of the meaning of elements.</p><p id="rfc.section.23.3.2.p.2">There is no kindness in accepting illegal combinations of XML elements. At best it will cause an unwanted result and at worst it can cause real damage.</p><h4 id="rfc.section.23.3.2.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.23.3.2.1">23.3.2.1</a> Example - XML Syntax Error</h4><p id="rfc.section.23.3.2.1.p.1">The following request body for a PROPFIND method is illegal.</p><div id="rfc.figure.u.94"></div><pre class="text"> <?xml version="1.0" encoding="utf-8" ?>
|
|||
|
<D:propfind xmlns:D="DAV:">
|
|||
|
<D:allprop/>
|
|||
|
<D:propname/>
|
|||
|
</D:propfind>
|
|||
|
</pre><p id="rfc.section.23.3.2.1.p.3">The definition of the propfind element only allows for the allprop or the propname element, not both. Thus the above is an error and must be responded to with a 400 (Bad Request).</p><p id="rfc.section.23.3.2.1.p.4">Imagine, however, that a server wanted to be "kind" and decided to pick the allprop element as the true element and respond to it. A client running over a bandwidth limited line who intended to execute a propname would be in for a big surprise if the server treated the command as an allprop.</p><p id="rfc.section.23.3.2.1.p.5">Additionally, if a server were lenient and decided to reply to this request, the results would vary randomly from server to server, with some servers executing the allprop directive, and others executing the propname directive. This reduces interoperability rather than increasing it.</p><h4 id="rfc.section.23.3.2.2"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.23.3.2.2">23.3.2.2</a> Example - Unknown XML Element</h4><p id="rfc.section.23.3.2.2.p.1">The previous example was illegal because it contained two elements that were explicitly banned from appearing together in the propfind element. However, XML is an extensible language, so one can imagine new elements being defined for use with propfind. Below is the request body of a PROPFIND and, like the previous example, must be rejected with a 400 (Bad Request) by a server that does not understand the expired-props element.</p><div id="rfc.figure.u.95"></div><pre class="text"> <?xml version="1.0" encoding="utf-8" ?>
|
|||
|
<D:propfind xmlns:D="DAV:"
|
|||
|
xmlns:E="http://www.foo.bar/standards/props/">
|
|||
|
<E:expired-props/>
|
|||
|
</D:propfind>
|
|||
|
</pre><p id="rfc.section.23.3.2.2.p.3">To understand why a 400 (Bad Request) is returned let us look at the request body as the server unfamiliar with expired-props sees it.</p><div id="rfc.figure.u.96"></div><pre class="text"> <?xml version="1.0" encoding="utf-8" ?>
|
|||
|
<D:propfind xmlns:D="DAV:"
|
|||
|
xmlns:E="http://www.foo.bar/standards/props/">
|
|||
|
</D:propfind>
|
|||
|
</pre><p id="rfc.section.23.3.2.2.p.5">As the server does not understand the expired-props element, according to the WebDAV-specific XML processing rules specified in <a href="http://www.webdav.org/specs/rfc2518.html#instructions.for.processing.xml.in.dav" title="Instructions for Processing XML in DAV">Section 14</a>, it must ignore it. Thus the server sees an empty propfind, which by the definition of the propfind element is illegal.</p><p id="rfc.section.23.3.2.2.p.6">Please note that had the extension been additive it would not necessarily have resulted in a 400 (Bad Request). For example, imagine the following request body for a PROPFIND:</p><div id="rfc.figure.u.97"></div><pre class="text"> <?xml version="1.0" encoding="utf-8" ?>
|
|||
|
<D:propfind xmlns:D="DAV:"
|
|||
|
xmlns:E="http://www.foo.bar/standards/props/">
|
|||
|
<D:propname/>
|
|||
|
<E:leave-out>*boss*</E:leave-out>
|
|||
|
</D:propfind>
|
|||
|
</pre><p id="rfc.section.23.3.2.2.p.8">The previous example contains the fictitious element leave-out. Its purpose is to prevent the return of any property whose name matches the submitted pattern. If the previous example were submitted to a server unfamiliar with leave-out, the only result would be that the leave-out element would be ignored and a propname would be executed.</p><h2 id="rfc.section.23.4"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.23.4">23.4</a> <a id="xml.namespaces.for.webdav" href="http://www.webdav.org/specs/rfc2518.html#xml.namespaces.for.webdav">Appendix 4 -- XML Namespaces for WebDAV</a></h2><h3 id="rfc.section.23.4.1"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.23.4.1">23.4.1</a> Introduction</h3><p id="rfc.section.23.4.1.p.1">All DAV compliant systems <em class="bcp14">MUST</em> support the XML namespace extensions as specified in <a href="http://www.webdav.org/specs/rfc2518.html#REC-XML-NAMES" id="rfc.xref.REC-XML-NAMES.1"><cite title="Namespaces in XML">[REC-XML-NAMES]</cite></a>.</p><h3 id="rfc.section.23.4.2"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.section.23.4.2">23.4.2</a> Meaning of Qualified Names</h3><p id="rfc.section.23.4.2.p.1">[Note to the reader: This section does not appear in <a href="http://www.webdav.org/specs/rfc2518.html#REC-XML-NAMES" id="rfc.xref.REC-XML-NAMES.2"><cite title="Namespaces in XML">[REC-XML-NAMES]</cite></a>, but is necessary to avoid ambiguity for WebDAV XML processors.]</p><p id="rfc.section.23.4.2.p.2">WebDAV compliant XML processors <em class="bcp14">MUST</em> interpret a qualified name as a URI constructed by appending the LocalPart to the namespace name URI.</p><div id="rfc.figure.u.98"></div><p>Example</p><pre class="text"> <del:glider xmlns:del="http://www.del.jensen.org/">
|
|||
|
<del:glidername>
|
|||
|
Johnny Updraft
|
|||
|
</del:glidername>
|
|||
|
<del:glideraccidents/>
|
|||
|
</del:glider>
|
|||
|
</pre><p id="rfc.section.23.4.2.p.4">In this example, the qualified element name "del:glider" is interpreted as the URL "http://www.del.jensen.org/glider".</p><div id="rfc.figure.u.99"></div><pre class="text"> <bar:glider xmlns:del="http://www.del.jensen.org/">
|
|||
|
<bar:glidername>
|
|||
|
Johnny Updraft
|
|||
|
</bar:glidername>
|
|||
|
<bar:glideraccidents/>
|
|||
|
</bar:glider>
|
|||
|
</pre><p id="rfc.section.23.4.2.p.6">Even though this example is syntactically different from the previous example, it is semantically identical. Each instance of the namespace name "bar" is replaced with "http://www.del.jensen.org/" and then appended to the local name for each element tag. The resulting tag names in this example are exactly the same as for the previous example.</p><div id="rfc.figure.u.100"></div><pre class="text"> <foo:r xmlns:foo="http://www.del.jensen.org/glide">
|
|||
|
<foo:rname>
|
|||
|
Johnny Updraft
|
|||
|
</foo:rname>
|
|||
|
<foo:raccidents/>
|
|||
|
</foo:r>
|
|||
|
</pre><p id="rfc.section.23.4.2.p.8">This example is semantically identical to the two previous ones. Each instance of the namespace name "foo" is replaced with "http://www.del.jensen.org/glide" which is then appended to the local name for each element tag, the resulting tag names are identical to those in the previous examples.</p><h1><a id="rfc.copyright" href="http://www.webdav.org/specs/rfc2518.html#rfc.copyright">Full Copyright Statement</a></h1><p>Copyright <20> The Internet Society (1999). All Rights Reserved.</p><p>This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.</p><p>The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assignees.</p><p>This document and the information contained herein is provided on an <20>;AS IS<49> basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.</p><h1><a id="rfc.ipr" href="http://www.webdav.org/specs/rfc2518.html#rfc.ipr">Intellectual Property</a></h1><p>The IETF takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on the IETF's procedures with respect to rights in standards-track and standards-related documentation can be found in BCP-11. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification can be obtained from the IETF Secretariat.</p><p>The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to practice this standard. Please address the information to the IETF Executive Director.</p><h1>Acknowledgement</h1><p>Funding for the RFC Editor function is provided by the IETF Administrative Support Activity (IASA).</p><h1 id="rfc.index"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.index">Index</a></h1><p class="noprint"><a href="http://www.webdav.org/specs/rfc2518.html#rfc.index.1">1</a> <a href="http://www.webdav.org/specs/rfc2518.html#rfc.index.2">2</a> <a href="http://www.webdav.org/specs/rfc2518.html#rfc.index.4">4</a> <a href="http://www.webdav.org/specs/rfc2518.html#rfc.index.5">5</a> <a href="http://www.webdav.org/specs/rfc2518.html#rfc.index.A">A</a> <a href="http://www.webdav.org/specs/rfc2518.html#rfc.index.C">C</a> <a href="http://www.webdav.org/specs/rfc2518.html#rfc.index.D">D</a> <a href="http://www.webdav.org/specs/rfc2518.html#rfc.index.E">E</a> <a href="http://www.webdav.org/specs/rfc2518.html#rfc.index.H">H</a> <a href="http://www.webdav.org/specs/rfc2518.html#rfc.index.I">I</a> <a href="http://www.webdav.org/specs/rfc2518.html#rfc.index.K">K</a> <a h
|