| draft-ietf-webdav-rfc2518bis-01.txt | | draft-ietf-webdav-rfc2518bis-02.txt | |
| | | | |
|
| Y. Goland, Microsoft | | Internet Draft Y. Goland, Microsoft | |
| Internet Draft E. Whitehead, UCSC | | Document: draft-ietf-webdav-rfc2518bis-02.txt E. Whitehead, UCSC | |
| Document: draft-ietf-webdav-rfc2518bis-01.txt A. Faizi, Netscape | | Expires: Mar 2003 A. Faizi, Netscape | |
| Expires: Dec 2002 S. Carter, Novell | | S. Carter, Novell | |
| D. Jensen, Novell | | D. Jensen, Novell | |
| L. Dusseault, Xythos | | L. Dusseault, Xythos | |
|
| | | J. Crawford, IBM | |
| | | | |
| HTTP Extensions for Distributed Authoring - WebDAV RFC2518 bis | | HTTP Extensions for Distributed Authoring - WebDAV RFC2518 bis | |
| | | | |
| Status of this Memo | | Status of this Memo | |
| | | | |
| This document is an Internet-Draft and is in full conformance | | This document is an Internet-Draft and is in full conformance | |
| with all provisions of Section 10 of RFC2026. | | with all provisions of Section 10 of RFC2026. | |
| | | | |
| Internet-Drafts are working documents of the Internet Engineering | | Internet-Drafts are working documents of the Internet Engineering | |
| Task Force (IETF), its areas, and its working groups. Note that | | Task Force (IETF), its areas, and its working groups. Note that | |
| | | | |
| skipping to change at line 32 | | skipping to change at line 33 | |
| at any time. It is inappropriate to use Internet-Drafts as | | at any time. It is inappropriate to use Internet-Drafts as | |
| reference material or to cite them other than as "work in progress." | | reference material or to cite them other than as "work in progress." | |
| | | | |
| The list of current Internet-Drafts can be accessed at | | The list of current Internet-Drafts can be accessed at | |
| http://www.ietf.org/ietf/1id-abstracts.txt | | http://www.ietf.org/ietf/1id-abstracts.txt | |
| | | | |
| The list of Internet-Draft Shadow Directories can be accessed at | | The list of Internet-Draft Shadow Directories can be accessed at | |
| http://www.ietf.org/shadow.html. | | http://www.ietf.org/shadow.html. | |
| | | | |
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |
|
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in | | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |
| this document are to be interpreted as described in RFC 2119 | | document are to be interpreted as described in RFC 2119 [RFC2119]. | |
| [RFC2119]. | | | |
| | | | |
| Abstract | | Abstract | |
| | | | |
| WebDAV consists of a set of methods, headers, and content-types | | WebDAV consists of a set of methods, headers, and content-types | |
| ancillary to HTTP/1.1 for the management of resource properties, | | ancillary to HTTP/1.1 for the management of resource properties, | |
| creation and management of resource collections, namespace | | creation and management of resource collections, namespace | |
| manipulation, and resource locking (collision avoidance). | | manipulation, and resource locking (collision avoidance). | |
| | | | |
| RFC2518 was published in February 1998, and this draft makes only | | RFC2518 was published in February 1998, and this draft makes only | |
| minor revisions mostly due to interoperability experience. | | minor revisions mostly due to interoperability experience. | |
| | | | |
|
| Expires Dec 2002 1 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| Table of Contents | | Table of Contents | |
| | | | |
|
| 1 Introduction...................................................6 | | 1 Introduction............................................6 | |
| 2 Notational Conventions.........................................7 | | 2 Notational Conventions...................................7 | |
| 3 Terminology....................................................8 | | 3 Terminology.............................................8 | |
| 4 Data Model for Resource Properties.............................8 | | 4 Data Model for Resource Properties.........................8 | |
| 4.1 The Resource Property Model..................................8 | | | |
| 4.2 Existing Metadata Proposals..................................9 | | | |
| 4.3 Properties and HTTP Headers..................................9 | | | |
| 4.4 Property Values.............................................10 | | | |
| 4.5 Property Names..............................................10 | | | |
| 4.6 Media Independent Links.....................................11 | | | |
| 5 Collections of Web Resources..................................11 | | | |
| 5.1 HTTP URL Namespace Model....................................11 | | | |
| 5.2 Collection Resources........................................12 | | | |
| 5.3 Source Resources and Output Resources.......................13 | | | |
| 6 Locking.......................................................14 | | | |
| 6.1 Exclusive Vs. Shared Locks..................................14 | | | |
| 6.2 Required Support............................................15 | | | |
| 6.3 Lock Tokens.................................................16 | | | |
| 6.4 opaquelocktoken Lock Token URI Scheme.......................16 | | | |
| 6.5 Lock Capability Discovery...................................17 | | | |
| 6.6 Active Lock Discovery.......................................17 | | | |
| 6.7 Usage Considerations........................................17 | | | |
| 7 Write Lock....................................................18 | | | |
| 7.1 Methods Restricted by Write Locks...........................18 | | | |
| 7.2 Write Locks and Lock Tokens.................................18 | | | |
| 7.3 Write Locks and Properties..................................19 | | | |
| 7.4 Write Locks and Unmapped URLs...............................19 | | | |
| 7.5 Write Locks and Collections.................................20 | | | |
| 7.6 Write Locks and the If Request Header.......................20 | | | |
| 7.6.1 Example - Write Lock........................................21 | | | |
| 7.7 Write Locks and COPY/MOVE...................................21 | | | |
| 7.8 Refreshing Write Locks......................................22 | | | |
| 8 HTTP Methods for Distributed Authoring........................22 | | | |
| 8.1 PROPFIND....................................................23 | | | |
| 8.1.1 Example - Retrieving Named Properties.......................24 | | | |
| 8.1.2 Example - Using propname to Retrieve all Property Names.....25 | | | |
| 8.2 PROPPATCH...................................................27 | | | |
| 8.2.1 Status Codes for use with 207 (Multi-Status)................27 | | | |
| 8.2.2 Example - PROPPATCH.........................................28 | | | |
| 8.3 MKCOL Method................................................29 | | | |
| 8.3.1 Request.....................................................29 | | | |
| 8.3.2 Status Codes................................................29 | | | |
| 8.3.3 Example - MKCOL.............................................30 | | | |
| 8.4 GET, HEAD for Collections...................................30 | | | |
| 8.5 POST for Collections........................................31 | | | |
| | | | |
|
| Expires Dec 2002 2 WebDAV (RFC2518) bis June 2002 | | Expires Mar 2003 1 | |
| | | | |
|
| 8.6 DELETE......................................................31 | | WebDAV (RFC2518) bis September 2002 | |
| 8.6.1 DELETE for Non-Collection Resources.........................31 | | | |
| 8.6.2 DELETE for Collections......................................31 | | | |
| 8.7 PUT.........................................................32 | | | |
| 8.7.1 PUT for Non-Collection Resources............................32 | | | |
| 8.7.2 PUT for Collections.........................................33 | | | |
| 8.8 COPY Method.................................................33 | | | |
| 8.8.1 COPY for HTTP/1.1 resources.................................33 | | | |
| 8.8.2 COPY for Properties.........................................33 | | | |
| 8.8.3 COPY for Collections........................................34 | | | |
| 8.8.4 COPY and the Overwrite Header...............................35 | | | |
| 8.8.5 Status Codes................................................35 | | | |
| 8.8.6 Example - COPY with Overwrite...............................36 | | | |
| 8.8.7 Example - COPY with No Overwrite............................36 | | | |
| 8.8.8 Example - COPY of a Collection..............................36 | | | |
| 8.9 MOVE Method.................................................37 | | | |
| 8.9.1 MOVE for Properties.........................................38 | | | |
| 8.9.2 MOVE for Collections........................................38 | | | |
| 8.9.3 MOVE and the Overwrite Header...............................39 | | | |
| 8.9.4 Status Codes................................................39 | | | |
| 8.9.5 Example - MOVE of a Non-Collection..........................39 | | | |
| 8.9.6 Example - MOVE of a Collection..............................40 | | | |
| 8.10 LOCK Method................................................41 | | | |
| 8.10.1 Operation..................................................41 | | | |
| 8.10.2 The Effect of Locks on Properties and Collections..........41 | | | |
| 8.10.3 Locking Replicated Resources...............................42 | | | |
| 8.10.4 Depth and Locking..........................................42 | | | |
| 8.10.5 Interaction with other Methods.............................42 | | | |
| 8.10.6 Lock Compatibility Table...................................42 | | | |
| 8.10.7 Status Codes...............................................43 | | | |
| 8.10.8 Example - Simple Lock Request..............................43 | | | |
| 8.10.9 Example - Refreshing a Write Lock..........................44 | | | |
| 8.10.10 Example - Multi-Resource Lock Request.....................45 | | | |
| 8.11 UNLOCK Method..............................................47 | | | |
| 8.11.1 Example - UNLOCK...........................................47 | | | |
| 9 HTTP Headers for Distributed Authoring........................47 | | | |
| 9.1 DAV Header..................................................48 | | | |
| 9.2 Depth Header................................................48 | | | |
| 9.3 Destination Header..........................................49 | | | |
| 9.4 If Header...................................................49 | | | |
| 9.4.1 No-tag-list Production......................................50 | | | |
| 9.4.2 Tagged-list Production......................................50 | | | |
| 9.4.3 not Production..............................................51 | | | |
| 9.4.4 Matching Function...........................................51 | | | |
| 9.4.5 If Header and Non-DAV Compliant Proxies.....................52 | | | |
| 9.5 Lock-Token Header...........................................52 | | | |
| 9.6 Overwrite Header............................................52 | | | |
| | | | |
|
| Expires Dec 2002 3 WebDAV (RFC2518) bis June 2002 | | 4.1 The Resource Property Model..............................8 | |
| | | 4.2 Existing Metadata Proposals..............................9 | |
| | | 4.3 Properties and HTTP Headers..............................9 | |
| | | 4.4 Property Values........................................9 | |
| | | 4.5 Property Names........................................ 10 | |
| | | 4.6 Media Independent Links................................ 11 | |
| | | 5 Collections of Web Resources............................. 11 | |
| | | 5.1 HTTP URL Namespace Model ............................... 11 | |
| | | 5.2 Collection Resources................................... 11 | |
| | | 5.3 Source Resources and Output Resources.................... 13 | |
| | | 6 Locking ............................................... 13 | |
| | | 6.1 Exclusive Vs. Shared Locks.............................. 13 | |
| | | 6.2 Required Support...................................... 14 | |
| | | 6.3 Lock Tokens........................................... 15 | |
| | | 6.4 opaquelocktoken Lock Token URI Scheme.................... 15 | |
| | | 6.5 Lock Capability Discovery............................... 16 | |
| | | 6.6 Active Lock Discovery.................................. 16 | |
| | | 6.7 Usage Considerations................................... 16 | |
| | | 7 Write Lock............................................. 17 | |
| | | 7.1 Methods Restricted by Write Locks........................ 17 | |
| | | 7.2 Write Locks and Lock Tokens............................. 17 | |
| | | 7.3 Write Locks and Properties.............................. 18 | |
| | | 7.4 Write Locks and Unmapped URLs........................... 18 | |
| | | 7.5 Write Locks and Collections............................. 19 | |
| | | 7.6 Write Locks and the If Request Header.................... 20 | |
| | | 7.7 Write Locks and COPY/MOVE............................... 20 | |
| | | 7.8 Refreshing Write Locks................................. 21 | |
| | | 8 HTTP Methods for Distributed Authoring .................... 21 | |
| | | 8.1 General request and response handling.................... 21 | |
| | | 8.2 PROPFIND............................................. 22 | |
| | | 8.2.1 Example - Retrieving Named Properties................... 24 | |
| | | 8.2.2 Example - Using propname to Retrieve all Property Names... 25 | |
| | | 8.3 PROPPATCH ............................................ 27 | |
| | | 8.3.1 Status Codes for use with 207 (Multi-Status)............. 27 | |
| | | 8.3.2 Example - PROPPATCH................................... 28 | |
| | | 8.4 MKCOL Method.......................................... 29 | |
| | | 8.4.1 Example - MKCOL...................................... 30 | |
| | | 8.5 GET, HEAD for Collections............................... 30 | |
| | | 8.6 POST for Collections................................... 31 | |
| | | 8.7 DELETE............................................... 31 | |
| | | 8.7.1 Example - DELETE..................................... 32 | |
| | | 8.8 PUT.................................................. 32 | |
| | | 8.9 COPY Method........................................... 33 | |
| | | 8.10 MOVE Method ......................................... 37 | |
| | | 8.11 LOCK Method ......................................... 40 | |
| | | 8.11.1 Example - Simple Lock Request......................... 43 | |
| | | 8.11.2 Example - Refreshing a Write Lock..................... 45 | |
| | | | |
|
| 9.7 Status-URI Response Header..................................53 | | Expires Mar 2003 2 | |
| 9.8 Timeout Request Header......................................53 | | | |
| 10 Status Code Extensions to HTTP/1.1............................54 | | | |
| 10.1 102 Processing.............................................54 | | | |
| 10.2 207 Multi-Status...........................................54 | | | |
| 10.3 422 Unprocessable Entity...................................55 | | | |
| 10.4 423 Locked.................................................55 | | | |
| 10.5 424 Failed Dependency......................................55 | | | |
| 10.6 507 Insufficient Storage...................................55 | | | |
| 11 Multi-Status Response.........................................55 | | | |
| 12 XML Element Definitions.......................................56 | | | |
| 12.1 activelock XML Element.....................................56 | | | |
| 12.1.1 depth XML Element..........................................56 | | | |
| 12.1.2 locktoken XML Element......................................56 | | | |
| 12.1.3 timeout XML Element........................................56 | | | |
| 12.2 collection XML Element.....................................57 | | | |
| 12.3 href XML Element...........................................57 | | | |
| 12.4 link XML Element...........................................57 | | | |
| 12.4.1 dst XML Element............................................57 | | | |
| 12.4.2 src XML Element............................................58 | | | |
| 12.5 lockentry XML Element......................................58 | | | |
| 12.6 lockinfo XML Element.......................................58 | | | |
| 12.7 lockscope XML Element......................................58 | | | |
| 12.7.1 exclusive XML Element......................................59 | | | |
| 12.7.2 shared XML Element.........................................59 | | | |
| 12.8 locktype XML Element.......................................59 | | | |
| 12.8.1 write XML Element..........................................59 | | | |
| 12.9 multistatus XML Element....................................59 | | | |
| 12.9.1 response XML Element.......................................60 | | | |
| 12.9.2 responsedescription XML Element............................60 | | | |
| 12.10 owner XML Element..........................................61 | | | |
| 12.11 prop XML element...........................................61 | | | |
| 12.12 propertyupdate XML element.................................61 | | | |
| 12.12.1 remove XML element........................................62 | | | |
| 12.12.2 set XML element...........................................62 | | | |
| 12.13 propfind XML Element.......................................62 | | | |
| 12.13.1 allprop XML Element.......................................62 | | | |
| 12.13.2 propname XML Element......................................63 | | | |
| 13 DAV Properties................................................64 | | | |
| 13.1 creationdate Property......................................64 | | | |
| 13.2 displayname Property.......................................64 | | | |
| 13.3 getcontentlanguage Property................................64 | | | |
| 13.4 getcontentlength Property..................................65 | | | |
| 13.5 getcontenttype Property....................................65 | | | |
| 13.6 getetag Property...........................................65 | | | |
| 13.7 getlastmodified Property...................................66 | | | |
| 13.8 lockdiscovery Property.....................................66 | | | |
| | | | |
|
| Expires Dec 2002 4 WebDAV (RFC2518) bis June 2002 | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
|
| 13.8.1 Example - Retrieving the lockdiscovery Property............66 | | 8.11.3 Example - Multi-Resource Lock Request.................. 46 | |
| 13.9 resourcetype Property......................................67 | | 8.12 UNLOCK Method........................................ 47 | |
| 13.10 source Property............................................68 | | 8.12.1 Example - UNLOCK.................................... 48 | |
| 13.10.1 Example - A source Property...............................68 | | 9 HTTP Headers for Distributed Authoring .................... 48 | |
| 13.11 supportedlock Property.....................................69 | | 9.1 DAV Header............................................ 48 | |
| 13.11.1 Example - Retrieving the supportedlock Property...........69 | | 9.2 Depth Header.......................................... 49 | |
| 14 Instructions for Processing XML in DAV........................70 | | 9.3 Destination Header..................................... 50 | |
| 15 DAV Compliance Classes........................................71 | | 9.4 If Header ............................................ 50 | |
| 15.1 Class 1....................................................71 | | 9.5 Lock-Token Header ..................................... 53 | |
| 15.2 Class 2....................................................71 | | 9.6 Overwrite Header...................................... 53 | |
| 16 Internationalization Considerations...........................71 | | 9.7 Status-URI Response Header.............................. 54 | |
| 17 Security Considerations.......................................73 | | 9.8 Timeout Request Header................................. 54 | |
| 17.1 Authentication of Clients..................................73 | | 10 Status Code Extensions to HTTP/1.1........................ 55 | |
| 17.2 Denial of Service..........................................73 | | 10.1 102 Processing....................................... 55 | |
| 17.3 Security through Obscurity.................................74 | | 10.2 207 Multi-Status..................................... 55 | |
| 17.4 Privacy Issues Connected to Locks..........................74 | | 10.3 422 Unprocessable Entity.............................. 55 | |
| 17.5 Privacy Issues Connected to Properties.....................74 | | 10.4 423 Locked.......................................... 56 | |
| 17.6 Reduction of Security due to Source Link...................75 | | 10.5 424 Failed Dependency................................. 56 | |
| 17.7 Implications of XML External Entities......................75 | | 10.6 507 Insufficient Storage.............................. 56 | |
| 17.8 Risks Connected with Lock Tokens...........................75 | | 11 Use of HTTP Status Codes................................. 56 | |
| 18 IANA Considerations...........................................76 | | 11.1 302 ................................................ 56 | |
| 19 Intellectual Property.........................................77 | | 11.2 400 Bad Request...................................... 56 | |
| 20 Acknowledgements..............................................77 | | 11.3 403 Forbidden........................................ 56 | |
| 21 References....................................................79 | | 11.4 414 Request-URI Too Long.............................. 57 | |
| 21.1 Normative References.......................................79 | | 12 Multi-Status Response................................... 57 | |
| 21.2 Informational References...................................80 | | 12.1 302 and 303 in Multi-Status............................ 58 | |
| 22 Authors' Addresses............................................82 | | 13 XML Element Definitions ................................. 58 | |
| 23 Appendices....................................................83 | | 13.1 activelock XML Element................................ 58 | |
| 23.1 Appendix 1 - WebDAV Document Type Definition...............83 | | 13.2 depth XML Element.................................... 58 | |
| 23.2 Appendix 2 - ISO 8601 Date and Time Profile................84 | | 13.3 locktoken XML Element................................. 58 | |
| 23.3 Appendix 3 - Notes on Processing XML Elements..............85 | | 13.4 lockroot XML Element.................................. 59 | |
| 23.3.1 Notes on Empty XML Elements................................85 | | 13.5 timeout XML Element................................... 59 | |
| 23.3.2 Notes on Illegal XML Processing............................85 | | 13.6 collection XML Element................................ 59 | |
| 23.4 Appendix 4: Node Field Generation Without the IEEE 802 Address | | 13.7 href XML Element..................................... 59 | |
| 87 | | 13.8 link XML Element..................................... 59 | |
| 24 Full Copyright Statement......................................88 | | 13.9 dst XML Element...................................... 59 | |
| | | 13.10 src XML Element...................................... 59 | |
| | | 13.11 lockentry XML Element................................. 59 | |
| | | 13.12 lockinfo XML Element.................................. 60 | |
| | | 13.13 lockscope XML Element................................. 60 | |
| | | 13.14 exclusive XML Element................................. 60 | |
| | | 13.15 shared XML Element ................................... 60 | |
| | | 13.16 locktype XML Element.................................. 60 | |
| | | 13.17 write XML Element.................................... 61 | |
| | | 13.18 multistatus XML Element............................... 61 | |
| | | 13.19 response XML Element.................................. 61 | |
| | | 13.20 propstat XML Element.................................. 62 | |
| | | | |
|
| Expires Dec 2002 5 WebDAV (RFC2518) bis June 2002 | | Expires Mar 2003 3 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| | | 13.21 status XML Element ................................... 62 | |
| | | 13.22 responsedescription XML Element........................ 62 | |
| | | 13.23 owner XML Element.................................... 62 | |
| | | 13.24 prop XML element..................................... 63 | |
| | | 13.25 propertyupdate XML element ............................ 63 | |
| | | 13.26 remove XML element ................................... 63 | |
| | | 13.27 set XML element...................................... 63 | |
| | | 13.28 propfind XML Element.................................. 64 | |
| | | 13.29 allprop XML Element................................... 64 | |
| | | 13.30 propname XML Element.................................. 64 | |
| | | 14 DAV Properties......................................... 64 | |
| | | 14.1 creationdate Property................................. 65 | |
| | | 14.2 displayname Property.................................. 65 | |
| | | 14.3 getcontentlanguage Property............................ 65 | |
| | | 14.4 getcontentlength Property............................. 66 | |
| | | 14.5 getcontenttype Property............................... 66 | |
| | | 14.6 getetag Property..................................... 67 | |
| | | 14.7 getlastmodified Property.............................. 67 | |
| | | 14.8 lockdiscovery Property................................ 67 | |
| | | 14.8.1 Example - Retrieving the lockdiscovery Property......... 68 | |
| | | 14.9 resourcetype Property................................. 69 | |
| | | 14.10 supportedlock Property................................ 69 | |
| | | 14.10.1 Example - Retrieving the supportedlock Property ........ 70 | |
| | | 15 Instructions for Processing XML in DAV .................... 71 | |
| | | 16 DAV Compliance Classes.................................. 71 | |
| | | 16.1 Class 1............................................. 71 | |
| | | 16.2 Class 2............................................. 72 | |
| | | 17 Internationalization Considerations....................... 72 | |
| | | 18 Security Considerations ................................. 73 | |
| | | 18.1 Authentication of Clients............................. 74 | |
| | | 18.2 Denial of Service.................................... 74 | |
| | | 18.3 Security through Obscurity ............................ 75 | |
| | | 18.4 Privacy Issues Connected to Locks...................... 75 | |
| | | 18.5 Privacy Issues Connected to Properties.................. 75 | |
| | | 18.6 Reduction of Security due to Source Link................ 75 | |
| | | 18.7 Implications of XML External Entities................... 75 | |
| | | 18.8 Risks Connected with Lock Tokens....................... 76 | |
| | | 19 IANA Considerations..................................... 77 | |
| | | 20 Intellectual Property................................... 77 | |
| | | 21 Acknowledgements........................................ 78 | |
| | | 22 References............................................. 79 | |
| | | 22.1 Normative References.................................. 79 | |
| | | 22.2 Informational References.............................. 80 | |
| | | 23 Authors' Addresses...................................... 81 | |
| | | 24 Appendices............................................. 82 | |
| | | 24.1 Appendix 1 - WebDAV Document Type Definition............. 82 | |
| | | 24.2 Appendix 3 - Notes on Processing XML Elements............ 83 | |
| | | | |
| | | Expires Mar 2003 4 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| | | 24.2.1 Notes on Empty XML Elements.......................... 83 | |
| | | 24.2.2 Notes on Illegal XML Processing....................... 83 | |
| | | 24.2.3 Example - XML Syntax Error........................... 84 | |
| | | 24.2.4 Example - Unknown XML Element......................... 84 | |
| | | 24.3 Appendix 4: UUID Node Generation....................... 85 | |
| | | 25 Full Copyright Statement................................. 86 | |
| | | | |
| | | Expires Mar 2003 5 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| 1 Introduction | | 1 Introduction | |
| | | | |
| This document describes an extension to the HTTP/1.1 protocol that | | This document describes an extension to the HTTP/1.1 protocol that | |
| allows clients to perform remote web content authoring operations. | | allows clients to perform remote web content authoring operations. | |
| This extension provides a coherent set of methods, headers, request | | This extension provides a coherent set of methods, headers, request | |
| entity body formats, and response entity body formats that provide | | entity body formats, and response entity body formats that provide | |
| operations for: | | operations for: | |
| | | | |
| Properties: The ability to create, remove, and query information | | Properties: The ability to create, remove, and query information | |
| | | | |
| skipping to change at line 286 | | skipping to change at line 273 | |
| HTTP headers. Unlike HTTP/1.1, WebDAV encodes method parameter | | HTTP headers. Unlike HTTP/1.1, WebDAV encodes method parameter | |
| information either in an Extensible Markup Language (XML) [REC-XML] | | information either in an Extensible Markup Language (XML) [REC-XML] | |
| request entity body, or in an HTTP header. The use of XML to encode | | request entity body, or in an HTTP header. The use of XML to encode | |
| method parameters was motivated by the ability to add extra XML | | method parameters was motivated by the ability to add extra XML | |
| elements to existing structures, providing extensibility; and by | | elements to existing structures, providing extensibility; and by | |
| XML's ability to encode information in ISO 10646 character sets, | | XML's ability to encode information in ISO 10646 character sets, | |
| providing internationalization support. As a rule of thumb, | | providing internationalization support. As a rule of thumb, | |
| parameters are encoded in XML entity bodies when they have unbounded | | parameters are encoded in XML entity bodies when they have unbounded | |
| length, or when they may be shown to a human user and hence require | | length, or when they may be shown to a human user and hence require | |
| encoding in an ISO 10646 character set. Otherwise, parameters are | | encoding in an ISO 10646 character set. Otherwise, parameters are | |
|
| encoded within HTTP headers. Section 9 describes the new HTTP | | encoded within HTTP headers. Section 0 describes the new HTTP | |
| headers used with WebDAV methods. | | headers used with WebDAV methods. | |
| | | | |
|
| Expires Dec 2002 6 WebDAV (RFC2518) bis June 2002 | | Expires Mar 2003 6 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| In addition to encoding method parameters, XML is used in WebDAV to | | In addition to encoding method parameters, XML is used in WebDAV to | |
| encode the responses from methods, providing the extensibility and | | encode the responses from methods, providing the extensibility and | |
| internationalization advantages of XML for method output, as well as | | internationalization advantages of XML for method output, as well as | |
| input. | | input. | |
| | | | |
|
| XML elements used in this specification are defined in section 12. A | | XML elements used in this specification are defined in section 13. A | |
| DTD is provided in Appendix 1. However, legal XML may not be valid | | DTD is provided in Appendix 1. However, legal XML will not be valid | |
| according to this DTD, because unknown XML elements may appear in | | according to this DTD due to namespace usage and extension rules, so | |
| WebDAV syntax without making the syntax illegal. | | the DTD is only informational. | |
| | | | |
| The XML namespace extension is also used in this specification in | | The XML namespace extension is also used in this specification in | |
| order to allow for new XML elements to be added without fear of | | order to allow for new XML elements to be added without fear of | |
| colliding with other element names. Although WebDAV request and | | colliding with other element names. Although WebDAV request and | |
| response bodies can be extended by arbitrary XML elements, which can | | response bodies can be extended by arbitrary XML elements, which can | |
| be ignored by the message recipient, an XML element in the DAV | | be ignored by the message recipient, an XML element in the DAV | |
|
| namespace SHOULD NOT be used in the request or response body of a | | namespace SHOULD NOT be used in the request or response body unless | |
| versioning method unless that XML element is explicitly defined in | | that XML element is explicitly defined in an IETF RFC reviewed by a | |
| an IETF RFC. | | WebDAV working group. | |
| | | | |
| While the status codes provided by HTTP/1.1 are sufficient to | | While the status codes provided by HTTP/1.1 are sufficient to | |
| describe most error conditions encountered by WebDAV methods, there | | describe most error conditions encountered by WebDAV methods, there | |
| are some errors that do not fall neatly into the existing | | are some errors that do not fall neatly into the existing | |
| categories. New status codes developed for the WebDAV methods are | | categories. New status codes developed for the WebDAV methods are | |
| defined in section 10. Since some WebDAV methods may operate over | | defined in section 10. Since some WebDAV methods may operate over | |
| many resources, the Multi-Status response has been introduced to | | many resources, the Multi-Status response has been introduced to | |
| return status information for multiple resources. The Multi-Status | | return status information for multiple resources. The Multi-Status | |
| response is described in section 11. | | response is described in section 11. | |
| | | | |
| WebDAV employs the property mechanism to store information about the | | WebDAV employs the property mechanism to store information about the | |
| current state of the resource. For example, when a lock is taken | | current state of the resource. For example, when a lock is taken | |
| out on a resource, a lock information property describes the current | | out on a resource, a lock information property describes the current | |
|
| state of the lock. Section 13 defines the properties used within the | | state of the lock. Section 14 defines the properties used within the | |
| WebDAV specification. | | WebDAV specification. | |
| | | | |
| Finishing off the specification are sections on what it means to be | | Finishing off the specification are sections on what it means to be | |
|
| compliant with this specification (section 15), on | | compliant with this specification (section 16), on | |
| internationalization support (section 16), and on security (section | | internationalization support (section 17), and on security (section | |
| 17). | | 18). | |
| | | | |
| 2 Notational Conventions | | 2 Notational Conventions | |
| | | | |
| Since this document describes a set of extensions to the HTTP/1.1 | | Since this document describes a set of extensions to the HTTP/1.1 | |
| protocol, the augmented BNF used herein to describe protocol | | protocol, the augmented BNF used herein to describe protocol | |
| elements is exactly the same as described in section 2.1 of | | elements is exactly the same as described in section 2.1 of | |
|
| [RFC2068]. Since this augmented BNF uses the basic production rules | | [RFC2616]. Since this augmented BNF uses the basic production rules | |
| provided in section 2.2 of [RFC2068], these rules apply to this | | provided in section 2.2 of [RFC2616], these rules apply to this | |
| document as well. | | document as well. | |
| | | | |
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in | | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in | |
| this document are to be interpreted as described in RFC 2119 | | this document are to be interpreted as described in RFC 2119 | |
| [RFC2119]. | | [RFC2119]. | |
| | | | |
|
| Expires Dec 2002 7 WebDAV (RFC2518) bis June 2002 | | Expires Mar 2003 7 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| 3 Terminology | | 3 Terminology | |
| | | | |
| URI/URL - A Uniform Resource Identifier and Uniform Resource | | URI/URL - A Uniform Resource Identifier and Uniform Resource | |
| Locator, respectively. These terms (and the distinction between | | Locator, respectively. These terms (and the distinction between | |
| them) are defined in [RFC2396]. | | them) are defined in [RFC2396]. | |
| | | | |
| Collection - A resource that contains a set of URIs, termed member | | Collection - A resource that contains a set of URIs, termed member | |
| URIs, which identify member resources and meets the requirements in | | URIs, which identify member resources and meets the requirements in | |
| section 5 of this specification. | | section 5 of this specification. | |
| | | | |
| skipping to change at line 394 | | skipping to change at line 385 | |
| | | | |
| Properties are pieces of data that describe the state of a resource. | | Properties are pieces of data that describe the state of a resource. | |
| Properties are data about data. | | Properties are data about data. | |
| | | | |
| Properties are used in distributed authoring environments to provide | | Properties are used in distributed authoring environments to provide | |
| for efficient discovery and management of resources. For example, a | | for efficient discovery and management of resources. For example, a | |
| 'subject' property might allow for the indexing of all resources by | | 'subject' property might allow for the indexing of all resources by | |
| their subject, and an 'author' property might allow for the | | their subject, and an 'author' property might allow for the | |
| discovery of what authors have written which documents. | | discovery of what authors have written which documents. | |
| | | | |
|
| Expires Dec 2002 8 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| The DAV property model consists of name/value pairs. The name of a | | The DAV property model consists of name/value pairs. The name of a | |
| property identifies the property's syntax and semantics, and | | property identifies the property's syntax and semantics, and | |
| provides an address by which to refer to its syntax and semantics. | | provides an address by which to refer to its syntax and semantics. | |
| | | | |
|
| | | Expires Mar 2003 8 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| There are two categories of properties: "live" and "dead". A live | | There are two categories of properties: "live" and "dead". A live | |
| property has its syntax and semantics enforced by the server. Live | | property has its syntax and semantics enforced by the server. Live | |
| properties include cases where a) the value of a property is read- | | properties include cases where a) the value of a property is read- | |
| only, maintained by the server, and b) the value of the property is | | only, maintained by the server, and b) the value of the property is | |
| maintained by the client, but the server performs syntax checking on | | maintained by the client, but the server performs syntax checking on | |
| submitted values. All instances of a given live property MUST comply | | submitted values. All instances of a given live property MUST comply | |
| with the definition associated with that property name. A dead | | with the definition associated with that property name. A dead | |
| property has its syntax and semantics enforced by the client; the | | property has its syntax and semantics enforced by the client; the | |
| server merely records the value of the property verbatim. | | server merely records the value of the property verbatim. | |
| | | | |
| | | | |
| skipping to change at line 447 | | skipping to change at line 440 | |
| motivation for the development of new forms of metadata as many | | motivation for the development of new forms of metadata as many | |
| communities increasingly make their data available in digital form, | | communities increasingly make their data available in digital form, | |
| requiring a metadata format to assist data location and cataloging. | | requiring a metadata format to assist data location and cataloging. | |
| | | | |
| 4.3 Properties and HTTP Headers | | 4.3 Properties and HTTP Headers | |
| | | | |
| Properties already exist, in a limited sense, in HTTP message | | Properties already exist, in a limited sense, in HTTP message | |
| headers. However, in distributed authoring environments a | | headers. However, in distributed authoring environments a | |
| relatively large number of properties are needed to describe the | | relatively large number of properties are needed to describe the | |
| state of a resource, and setting/returning them all through HTTP | | state of a resource, and setting/returning them all through HTTP | |
|
| | | | |
| Expires Dec 2002 9 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| headers is inefficient. Thus a mechanism is needed which allows a | | headers is inefficient. Thus a mechanism is needed which allows a | |
| principal to identify a set of properties in which the principal is | | principal to identify a set of properties in which the principal is | |
| interested and to set or retrieve just those properties. | | interested and to set or retrieve just those properties. | |
| | | | |
| 4.4 Property Values | | 4.4 Property Values | |
| | | | |
| The value of a property when expressed in XML MUST be well formed. | | The value of a property when expressed in XML MUST be well formed. | |
| | | | |
|
| | | Expires Mar 2003 9 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| XML has been chosen because it is a flexible, self-describing, | | XML has been chosen because it is a flexible, self-describing, | |
| structured data format that supports rich schema definitions, and | | structured data format that supports rich schema definitions, and | |
| because of its support for multiple character sets. XML's self- | | because of its support for multiple character sets. XML's self- | |
| describing nature allows any property's value to be extended by | | describing nature allows any property's value to be extended by | |
| adding new elements. Older clients will not break when they | | adding new elements. Older clients will not break when they | |
| encounter extensions because they will still have the data specified | | encounter extensions because they will still have the data specified | |
| in the original schema and will ignore elements they do not | | in the original schema and will ignore elements they do not | |
| understand. XML's support for multiple character sets allows any | | understand. XML's support for multiple character sets allows any | |
| human-readable property to be encoded and read in a character set | | human-readable property to be encoded and read in a character set | |
| familiar to the user. XML's support for multiple human languages, | | familiar to the user. XML's support for multiple human languages, | |
|
| using the "xml:lang" attribute (in the case of WebDAV properties, | | using the "xml:lang" attribute, handles cases where the same | |
| this attribute is placed on the æpropÆ element), handles cases where | | character set is employed by multiple human languages. Note that | |
| the same character set is employed by multiple human languages. | | xml:lang scope is recursive, so a xml:lang attribute on any element | |
| | | containing a property name element applies to the property value | |
| | | unless it has been overridden by a more locally scoped attribute. | |
| | | | |
|
| Other XML attributes in property values are significant. The server | | The value of a property consists of attributes on the property name | |
| MUST persistently store the XML attribute information stored on XML | | element, language attributes which are scoped to the property, | |
| elements contained by the XML element whose name is the name of the | | namespaces which are used in the property name element or its | |
| property. Attributes on the property name element SHOULD be | | children, and child elements including text. The server MUST | |
| persistently stored and restored in PROPFIND responses (other than | | persistently store this information and reconstruct it in PROPFIND | |
| the "xml:lang" and namespace attributes which MUST be stored). The | | responses. | |
| XML attribute xml:space MUST not be used to change white space | | | |
| handling. | | | |
| | | | |
|
| White space in property values is significant. | | The XML attribute xml:space MUST not be used to change white space | |
| | | handling. White space in property values is significant. | |
| | | | |
| 4.5 Property Names | | 4.5 Property Names | |
| | | | |
| A property name is a universally unique identifier that is | | A property name is a universally unique identifier that is | |
| associated with a schema that provides information about the syntax | | associated with a schema that provides information about the syntax | |
| and semantics of the property. | | and semantics of the property. | |
| | | | |
| Because a property's name is universally unique, clients can depend | | Because a property's name is universally unique, clients can depend | |
| upon consistent behavior for a particular property across multiple | | upon consistent behavior for a particular property across multiple | |
| resources, on the same and across different servers, so long as that | | resources, on the same and across different servers, so long as that | |
| property is "live" on the resources in question, and the | | property is "live" on the resources in question, and the | |
| implementation of the live property is faithful to its definition. | | implementation of the live property is faithful to its definition. | |
| | | | |
| The XML namespace mechanism, which is based on URIs [RFC2396], is | | The XML namespace mechanism, which is based on URIs [RFC2396], is | |
| used to name properties because it prevents namespace collisions and | | used to name properties because it prevents namespace collisions and | |
| provides for varying degrees of administrative control. | | provides for varying degrees of administrative control. | |
| | | | |
| The property namespace is flat; that is, no hierarchy of properties | | The property namespace is flat; that is, no hierarchy of properties | |
| is explicitly recognized. Thus, if a property A and a property A/B | | is explicitly recognized. Thus, if a property A and a property A/B | |
|
| | | | |
| Expires Dec 2002 10 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| exist on a resource, there is no recognition of any relationship | | exist on a resource, there is no recognition of any relationship | |
| between the two properties. It is expected that a separate | | between the two properties. It is expected that a separate | |
| specification will eventually be produced which will address issues | | specification will eventually be produced which will address issues | |
| relating to hierarchical properties. | | relating to hierarchical properties. | |
| | | | |
| Finally, it is not possible to define the same property twice on a | | Finally, it is not possible to define the same property twice on a | |
| single resource, as this would cause a collision in the resource's | | single resource, as this would cause a collision in the resource's | |
| property namespace. | | property namespace. | |
| | | | |
|
| | | Expires Mar 2003 10 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| 4.6 Media Independent Links | | 4.6 Media Independent Links | |
| | | | |
| Although HTML resources support links to other resources, the Web | | Although HTML resources support links to other resources, the Web | |
| needs more general support for links between resources of any media | | needs more general support for links between resources of any media | |
| type (media types are also known as MIME types, or content types). | | type (media types are also known as MIME types, or content types). | |
| WebDAV provides such links. A WebDAV link is a special type of | | WebDAV provides such links. A WebDAV link is a special type of | |
|
| property value, formally defined in section Error! Reference source | | property value, formally defined in section 0, that allows typed | |
| not found., that allows typed connections to be established between | | connections to be established between resources of any media type. | |
| resources of any media type. The property value consists of source | | The property value consists of source and destination Uniform | |
| and destination Uniform Resource Identifiers (URIs); the property | | Resource Identifiers (URIs); the property name identifies the link | |
| name identifies the link type. | | type. | |
| | | | |
| 5 Collections of Web Resources | | 5 Collections of Web Resources | |
| | | | |
| This section provides a description of a new type of Web resource, | | This section provides a description of a new type of Web resource, | |
| the collection, and discusses its interactions with the HTTP URL | | the collection, and discusses its interactions with the HTTP URL | |
| namespace. The purpose of a collection resource is to model | | namespace. The purpose of a collection resource is to model | |
| collection-like objects (e.g., file system directories) within a | | collection-like objects (e.g., file system directories) within a | |
| server's namespace. | | server's namespace. | |
| | | | |
| All DAV compliant resources MUST support the HTTP URL namespace | | All DAV compliant resources MUST support the HTTP URL namespace | |
| | | | |
| skipping to change at line 552 | | skipping to change at line 548 | |
| following conditions: for every URL in the HTTP hierarchy there | | following conditions: for every URL in the HTTP hierarchy there | |
| exists a collection that contains that URL as an internal member. | | exists a collection that contains that URL as an internal member. | |
| The root, or top-level collection of the namespace under | | The root, or top-level collection of the namespace under | |
| consideration is exempt from the previous rule. | | consideration is exempt from the previous rule. | |
| | | | |
| Neither HTTP/1.1 nor WebDAV require that the entire HTTP URL | | Neither HTTP/1.1 nor WebDAV require that the entire HTTP URL | |
| namespace be consistent. However, certain WebDAV methods are | | namespace be consistent. However, certain WebDAV methods are | |
| prohibited from producing results that cause namespace | | prohibited from producing results that cause namespace | |
| inconsistencies. | | inconsistencies. | |
| | | | |
|
| Expires Dec 2002 11 WebDAV (RFC2518) bis June 2002 | | Although implicit in [RFC2616] and [RFC2396], any resource, | |
| | | | |
| Although implicit in [RFC2068] and [RFC2396], any resource, | | | |
| including collection resources, MAY be identified by more than one | | including collection resources, MAY be identified by more than one | |
| URI. For example, a resource could be identified by multiple HTTP | | URI. For example, a resource could be identified by multiple HTTP | |
| URLs. | | URLs. | |
| | | | |
| 5.2 Collection Resources | | 5.2 Collection Resources | |
| | | | |
| A collection is a resource whose state consists of at least a list | | A collection is a resource whose state consists of at least a list | |
| of internal member URIs and a set of properties, but which may have | | of internal member URIs and a set of properties, but which may have | |
| additional state such as entity bodies returned by GET. An internal | | additional state such as entity bodies returned by GET. An internal | |
| member URI MUST be immediately relative to a base URI of the | | member URI MUST be immediately relative to a base URI of the | |
| collection. That is, the internal member URI is equal to a | | collection. That is, the internal member URI is equal to a | |
| containing collection's URI plus an additional segment for non- | | containing collection's URI plus an additional segment for non- | |
| collection resources, or additional segment plus trailing slash "/" | | collection resources, or additional segment plus trailing slash "/" | |
|
| | | | |
| | | Expires Mar 2003 11 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| for collection resources, where segment is defined in section 3.3 of | | for collection resources, where segment is defined in section 3.3 of | |
| [RFC2396]. | | [RFC2396]. | |
| | | | |
| Any given internal member URI MUST only belong to the collection | | Any given internal member URI MUST only belong to the collection | |
| once, i.e., it is illegal to have multiple instances of the same URI | | once, i.e., it is illegal to have multiple instances of the same URI | |
| in a collection. Properties defined on collections behave exactly | | in a collection. Properties defined on collections behave exactly | |
| as do properties on non-collection resources. | | as do properties on non-collection resources. | |
| | | | |
| For all WebDAV compliant resources A and B, identified by URIs U and | | For all WebDAV compliant resources A and B, identified by URIs U and | |
| V, for which U is immediately relative to V, B MUST be a collection | | V, for which U is immediately relative to V, B MUST be a collection | |
| | | | |
| skipping to change at line 597 | | skipping to change at line 596 | |
| http://foo.com/bar/blah is not WebDAV compliant and the URL | | http://foo.com/bar/blah is not WebDAV compliant and the URL | |
| http://foo.com/bar/ identifies a collection then URL | | http://foo.com/bar/ identifies a collection then URL | |
| http://foo.com/bar/blah may or may not be an internal member of the | | http://foo.com/bar/blah may or may not be an internal member of the | |
| collection with URL http://foo.com/bar/. | | collection with URL http://foo.com/bar/. | |
| | | | |
| If a WebDAV compliant resource has no WebDAV compliant children in | | If a WebDAV compliant resource has no WebDAV compliant children in | |
| the HTTP URL namespace hierarchy then the WebDAV compliant resource | | the HTTP URL namespace hierarchy then the WebDAV compliant resource | |
| is not required to be a collection. | | is not required to be a collection. | |
| | | | |
| There is a standing convention that when a collection is referred to | | There is a standing convention that when a collection is referred to | |
|
| by its name without a trailing slash, the trailing slash is | | by its name without a trailing slash, the server MAY handle the | |
| automatically appended. Due to this, a resource may accept a URI | | request as if the trailing slash were present. In this case it | |
| without a trailing "/" to point to a collection. In this case it | | SHOULD return a Content-Location header in the response, pointing to | |
| SHOULD return a Content-Location header in the response pointing to | | | |
| the URI ending with the "/". For example, if a client invokes a | | the URI ending with the "/". For example, if a client invokes a | |
|
| method on http://foo.bar/blah (no trailing slash), the resource | | method on http://foo.bar/blah (no trailing slash), the server may | |
| http://foo.bar/blah/ (trailing slash) may respond as if the | | respond as if the operation were invoked on http://foo.bar/blah/ | |
| operation were invoked on it, and should return a content-location | | (trailing slash), and should return a Content-Location header with | |
| | | the value http://foo.bar/blah/. Wherever a server produces a URL | |
| Expires Dec 2002 12 WebDAV (RFC2518) bis June 2002 | | referring to a collection, the server MUST include the trailing | |
| | | slash. In general clients SHOULD use the "/" form of collection | |
| header with http://foo.bar/blah/ in it. In general clients SHOULD | | names. | |
| use the "/" form of collection names. | | | |
| | | | |
| A resource MAY be a collection but not be WebDAV compliant. That | | A resource MAY be a collection but not be WebDAV compliant. That | |
| is, the resource may comply with all the rules set out in this | | is, the resource may comply with all the rules set out in this | |
| specification regarding how a collection is to behave without | | specification regarding how a collection is to behave without | |
| necessarily supporting all methods that a WebDAV compliant resource | | necessarily supporting all methods that a WebDAV compliant resource | |
| is required to support. In such a case the resource may return the | | is required to support. In such a case the resource may return the | |
| DAV:resourcetype property with the value DAV:collection but MUST NOT | | DAV:resourcetype property with the value DAV:collection but MUST NOT | |
| return a DAV header containing the value "1" on an OPTIONS response. | | return a DAV header containing the value "1" on an OPTIONS response. | |
| | | | |
| Clients MUST be able to support the case where WebDAV resources are | | Clients MUST be able to support the case where WebDAV resources are | |
| contained inside non-WebDAV resources. For example, if a OPTIONS | | contained inside non-WebDAV resources. For example, if a OPTIONS | |
| response from "http://foo.bar/servlet/dav/collection" indicates | | response from "http://foo.bar/servlet/dav/collection" indicates | |
| WebDAV support, the client cannot assume that | | WebDAV support, the client cannot assume that | |
|
| | | | |
| | | Expires Mar 2003 12 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| "http://foo.bar/servlet/dav/" or its parent necessarily are WebDAV | | "http://foo.bar/servlet/dav/" or its parent necessarily are WebDAV | |
| collections. | | collections. | |
| | | | |
| 5.3 Source Resources and Output Resources | | 5.3 Source Resources and Output Resources | |
| | | | |
| For many resources, the entity returned by a GET method exactly | | For many resources, the entity returned by a GET method exactly | |
| matches the persistent state of the resource, for example, a GIF | | matches the persistent state of the resource, for example, a GIF | |
| file stored on a disk. For this simple case, the URI at which a | | file stored on a disk. For this simple case, the URI at which a | |
| resource is accessed is identical to the URI at which the source | | resource is accessed is identical to the URI at which the source | |
| (the persistent state) of the resource is accessed. This is also | | (the persistent state) of the resource is accessed. This is also | |
| | | | |
| skipping to change at line 654 | | skipping to change at line 656 | |
| | | | |
| Sometimes the entity returned by GET is the output of a data- | | Sometimes the entity returned by GET is the output of a data- | |
| producing process that is described by one or more source resources | | producing process that is described by one or more source resources | |
| (that may not even have a location in the URI namespace). A single | | (that may not even have a location in the URI namespace). A single | |
| data-producing process may dynamically generate the state of a | | data-producing process may dynamically generate the state of a | |
| potentially large number of output resources. An example of this is | | potentially large number of output resources. An example of this is | |
| a CGI script that describes a "finger" gateway process that maps | | a CGI script that describes a "finger" gateway process that maps | |
| part of the namespace of a server into finger requests, such as | | part of the namespace of a server into finger requests, such as | |
| http://www.foo.bar.org/finger_gateway/user@host. | | http://www.foo.bar.org/finger_gateway/user@host. | |
| | | | |
|
| In the absence of distributed authoring capabilities, it is | | Although this problem would usefully be solved, interoperable WebDAV | |
| acceptable to have no mapping of source resource(s) to the URI | | implementations have been widely deployed without actually solving | |
| namespace. In fact, preventing access to the source resource(s) has | | this problem. Thus, the source vs. output problem is not solved in | |
| desirable security benefits. However, if remote editing of the | | this specification, and has been deferred to a separate document. | |
| source resource(s) is desired, the source resource(s) should be | | | |
| given a location in the URI namespace. This source location should | | | |
| | | | |
| Expires Dec 2002 13 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| not be one of the locations at which the generated output is | | | |
| retrievable, since in general it is impossible for the server to | | | |
| differentiate requests for source resources from requests for | | | |
| process output resources. There is often a many-to-many | | | |
| relationship between source resources and output resources. | | | |
| | | | |
| On WebDAV compliant servers the URI of the source resource(s) may be | | | |
| stored in a link on the output resource with type DAV:source (see | | | |
| section 13.10 for a description of the source link property). | | | |
| Storing the source URIs in links on the output resources places the | | | |
| burden of discovering the source on the authoring client. Note that | | | |
| the value of a source link is not guaranteed to point to the correct | | | |
| source. Source links may break or incorrect values may be entered. | | | |
| Also note that not all servers will allow the client to set the | | | |
| source link value. For example a server which generates source | | | |
| links on the fly for its CGI files will most likely not allow a | | | |
| client to set the source link value. | | | |
| | | | |
| 6 Locking | | 6 Locking | |
| | | | |
| The ability to lock a resource provides a mechanism for serializing | | The ability to lock a resource provides a mechanism for serializing | |
| access to that resource. Using a lock, an authoring client can | | access to that resource. Using a lock, an authoring client can | |
| provide a reasonable guarantee that another principal will not | | provide a reasonable guarantee that another principal will not | |
| modify a resource while it is being edited. In this way, a client | | modify a resource while it is being edited. In this way, a client | |
| can prevent the "lost update" problem. | | can prevent the "lost update" problem. | |
| | | | |
| This specification allows locks to vary over two client-specified | | This specification allows locks to vary over two client-specified | |
| parameters, the number of principals involved (exclusive vs. shared) | | parameters, the number of principals involved (exclusive vs. shared) | |
| and the type of access to be granted. This document defines locking | | and the type of access to be granted. This document defines locking | |
| for only one access type, write. However, the syntax is extensible, | | for only one access type, write. However, the syntax is extensible, | |
| and permits the eventual specification of locking for other access | | and permits the eventual specification of locking for other access | |
| types. | | types. | |
| | | | |
| 6.1 Exclusive Vs. Shared Locks | | 6.1 Exclusive Vs. Shared Locks | |
| | | | |
|
| | | Expires Mar 2003 13 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| The most basic form of lock is an exclusive lock. This is a lock | | The most basic form of lock is an exclusive lock. This is a lock | |
| where the access right in question is only granted to a single | | where the access right in question is only granted to a single | |
| principal. The need for this arbitration results from a desire to | | principal. The need for this arbitration results from a desire to | |
| avoid having to merge results. | | avoid having to merge results. | |
| | | | |
| However, there are times when the goal of a lock is not to exclude | | However, there are times when the goal of a lock is not to exclude | |
| others from exercising an access right but rather to provide a | | others from exercising an access right but rather to provide a | |
| mechanism for principals to indicate that they intend to exercise | | mechanism for principals to indicate that they intend to exercise | |
| their access rights. Shared locks are provided for this case. A | | their access rights. Shared locks are provided for this case. A | |
| shared lock allows multiple principals to receive a lock. Hence any | | shared lock allows multiple principals to receive a lock. Hence any | |
| principal with appropriate access can get the lock. | | principal with appropriate access can get the lock. | |
| | | | |
| With shared locks there are two trust sets that affect a resource. | | With shared locks there are two trust sets that affect a resource. | |
| The first trust set is created by access permissions. Principals | | The first trust set is created by access permissions. Principals | |
| who are trusted, for example, may have permission to write to the | | who are trusted, for example, may have permission to write to the | |
| resource. Among those who have access permission to write to the | | resource. Among those who have access permission to write to the | |
|
| | | | |
| Expires Dec 2002 14 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| resource, the set of principals who have taken out a shared lock | | resource, the set of principals who have taken out a shared lock | |
| also must trust each other, creating a (typically) smaller trust set | | also must trust each other, creating a (typically) smaller trust set | |
| within the access permission write set. | | within the access permission write set. | |
| | | | |
| Starting with every possible principal on the Internet, in most | | Starting with every possible principal on the Internet, in most | |
| situations the vast majority of these principals will not have write | | situations the vast majority of these principals will not have write | |
| access to a given resource. Of the small number who do have write | | access to a given resource. Of the small number who do have write | |
| access, some principals may decide to guarantee their edits are free | | access, some principals may decide to guarantee their edits are free | |
| from overwrite conflicts by using exclusive write locks. Others may | | from overwrite conflicts by using exclusive write locks. Others may | |
| decide they trust their collaborators will not overwrite their work | | decide they trust their collaborators will not overwrite their work | |
| | | | |
| skipping to change at line 753 | | skipping to change at line 734 | |
| edits, write the resource, release the lock. This editing process | | edits, write the resource, release the lock. This editing process | |
| has the problem that locks are not always properly released, for | | has the problem that locks are not always properly released, for | |
| example when a program crashes, or when a lock owner leaves without | | example when a program crashes, or when a lock owner leaves without | |
| unlocking a resource. While both timeouts and administrative action | | unlocking a resource. While both timeouts and administrative action | |
| can be used to remove an offending lock, neither mechanism may be | | can be used to remove an offending lock, neither mechanism may be | |
| available when needed; the timeout may be long or the administrator | | available when needed; the timeout may be long or the administrator | |
| may not be available. | | may not be available. | |
| | | | |
| 6.2 Required Support | | 6.2 Required Support | |
| | | | |
|
| | | Expires Mar 2003 14 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| A WebDAV compliant server is not required to support locking in any | | A WebDAV compliant server is not required to support locking in any | |
| form. If the server does support locking it may choose to support | | form. If the server does support locking it may choose to support | |
| any combination of exclusive and shared locks for any access types. | | any combination of exclusive and shared locks for any access types. | |
| | | | |
| The reason for this flexibility is that locking policy strikes to | | The reason for this flexibility is that locking policy strikes to | |
| the very heart of the resource management and versioning systems | | the very heart of the resource management and versioning systems | |
| employed by various storage repositories. These repositories | | employed by various storage repositories. These repositories | |
| require control over what sort of locking will be made available. | | require control over what sort of locking will be made available. | |
| For example, some repositories only support shared write locks while | | For example, some repositories only support shared write locks while | |
| others only provide support for exclusive write locks while yet | | others only provide support for exclusive write locks while yet | |
| others use no locking at all. As each system is sufficiently | | others use no locking at all. As each system is sufficiently | |
| different to merit exclusion of certain locking features, this | | different to merit exclusion of certain locking features, this | |
| specification leaves locking as the sole axis of negotiation within | | specification leaves locking as the sole axis of negotiation within | |
| WebDAV. | | WebDAV. | |
| | | | |
|
| Expires Dec 2002 15 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| 6.3 Lock Tokens | | 6.3 Lock Tokens | |
| | | | |
| A lock token is a type of state token, represented as a URI, which | | A lock token is a type of state token, represented as a URI, which | |
| identifies a particular lock. A lock token is returned by every | | identifies a particular lock. A lock token is returned by every | |
| successful LOCK operation in the lockdiscovery property in the | | successful LOCK operation in the lockdiscovery property in the | |
| response body, and can also be found through lock discovery on a | | response body, and can also be found through lock discovery on a | |
|
| resource. | | resource. Each lock has only one unique lock token. | |
| | | | |
| Lock token URIs MUST be unique across all resources for all time. | | Lock token URIs MUST be unique across all resources for all time. | |
| This uniqueness constraint allows lock tokens to be submitted across | | This uniqueness constraint allows lock tokens to be submitted across | |
| resources and servers without fear of confusion. | | resources and servers without fear of confusion. | |
| | | | |
| This specification provides a lock token URI scheme called | | This specification provides a lock token URI scheme called | |
| opaquelocktoken that meets the uniqueness requirements. However | | opaquelocktoken that meets the uniqueness requirements. However | |
| resources are free to return any URI scheme so long as it meets the | | resources are free to return any URI scheme so long as it meets the | |
| uniqueness requirements. | | uniqueness requirements. | |
| | | | |
| | | | |
| skipping to change at line 809 | | skipping to change at line 792 | |
| All resources MUST recognize the opaquelocktoken scheme and, at | | All resources MUST recognize the opaquelocktoken scheme and, at | |
| minimum, recognize that the lock token does not refer to an | | minimum, recognize that the lock token does not refer to an | |
| outstanding lock on the resource. | | outstanding lock on the resource. | |
| | | | |
| In order to guarantee uniqueness across all resources for all time | | In order to guarantee uniqueness across all resources for all time | |
| the opaquelocktoken requires the use of the Universal Unique | | the opaquelocktoken requires the use of the Universal Unique | |
| Identifier (UUID) mechanism, as described in [ISO-11578]. | | Identifier (UUID) mechanism, as described in [ISO-11578]. | |
| | | | |
| Opaquelocktoken generators, however, have a choice of how they | | Opaquelocktoken generators, however, have a choice of how they | |
| create these tokens. They can either generate a new UUID for every | | create these tokens. They can either generate a new UUID for every | |
|
| | | | |
| | | Expires Mar 2003 15 | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| lock token they create or they can create a single UUID and then | | lock token they create or they can create a single UUID and then | |
| add extension characters. If the second method is selected then the | | add extension characters. If the second method is selected then the | |
| program generating the extensions MUST guarantee that the same | | program generating the extensions MUST guarantee that the same | |
| extension will never be used twice with the associated UUID. | | extension will never be used twice with the associated UUID. | |
| | | | |
| OpaqueLockToken-URI = "opaquelocktoken:" UUID [Extension] ; The | | OpaqueLockToken-URI = "opaquelocktoken:" UUID [Extension] ; The | |
| UUID production is the string representation of a UUID, as defined | | UUID production is the string representation of a UUID, as defined | |
| in [ISO-11578]. Note that white space (LWS) is not allowed between | | in [ISO-11578]. Note that white space (LWS) is not allowed between | |
| elements of this production. | | elements of this production. | |
| | | | |
|
| Extension = path ; path is defined in section 3.2.1 of RFC 2068 | | Extension = path ; path is defined in section 3.2.1 of [RFC2616] | |
| [RFC2068] | | | |
| | | | |
| Expires Dec 2002 16 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| 6.5 Lock Capability Discovery | | 6.5 Lock Capability Discovery | |
| | | | |
| Since server lock support is optional, a client trying to lock a | | Since server lock support is optional, a client trying to lock a | |
| resource on a server can either try the lock and hope for the best, | | resource on a server can either try the lock and hope for the best, | |
| or perform some form of discovery to determine what lock | | or perform some form of discovery to determine what lock | |
| capabilities the server supports. This is known as lock capability | | capabilities the server supports. This is known as lock capability | |
| discovery. Lock capability discovery differs from discovery of | | discovery. Lock capability discovery differs from discovery of | |
| supported access control types, since there may be access control | | supported access control types, since there may be access control | |
| types without corresponding lock types. A client can determine what | | types without corresponding lock types. A client can determine what | |
| | | | |
| skipping to change at line 865 | | skipping to change at line 849 | |
| never be lost. Consider the following scenario: | | never be lost. Consider the following scenario: | |
| | | | |
| Two clients A and B are interested in editing the resource | | Two clients A and B are interested in editing the resource | |
| 'index.html'. Client A is an HTTP client rather than a WebDAV | | 'index.html'. Client A is an HTTP client rather than a WebDAV | |
| client, and so does not know how to perform locking. | | client, and so does not know how to perform locking. | |
| | | | |
| Client A doesn't lock the document, but does a GET and begins | | Client A doesn't lock the document, but does a GET and begins | |
| editing. | | editing. | |
| Client B does LOCK, performs a GET and begins editing. | | Client B does LOCK, performs a GET and begins editing. | |
| Client B finishes editing, performs a PUT, then an UNLOCK. | | Client B finishes editing, performs a PUT, then an UNLOCK. | |
|
| | | | |
| | | Expires Mar 2003 16 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| Client A performs a PUT, overwriting and losing all of B's changes. | | Client A performs a PUT, overwriting and losing all of B's changes. | |
| | | | |
| There are several reasons why the WebDAV protocol itself cannot | | There are several reasons why the WebDAV protocol itself cannot | |
| prevent this situation. First, it cannot force all clients to use | | prevent this situation. First, it cannot force all clients to use | |
| locking because it must be compatible with HTTP clients that do not | | locking because it must be compatible with HTTP clients that do not | |
| comprehend locking. Second, it cannot require servers to support | | comprehend locking. Second, it cannot require servers to support | |
| locking because of the variety of repository implementations, some | | locking because of the variety of repository implementations, some | |
|
| | | | |
| Expires Dec 2002 17 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| of which rely on reservations and merging rather than on locking. | | of which rely on reservations and merging rather than on locking. | |
| Finally, being stateless, it cannot enforce a sequence of operations | | Finally, being stateless, it cannot enforce a sequence of operations | |
| like LOCK / GET / PUT / UNLOCK. | | like LOCK / GET / PUT / UNLOCK. | |
| | | | |
| WebDAV servers that support locking can reduce the likelihood that | | WebDAV servers that support locking can reduce the likelihood that | |
| clients will accidentally overwrite each other's changes by | | clients will accidentally overwrite each other's changes by | |
| requiring clients to lock resources before modifying them. Such | | requiring clients to lock resources before modifying them. Such | |
| servers would effectively prevent HTTP 1.0 and HTTP 1.1 clients from | | servers would effectively prevent HTTP 1.0 and HTTP 1.1 clients from | |
| modifying resources. | | modifying resources. | |
| | | | |
| | | | |
| skipping to change at line 921 | | skipping to change at line 907 | |
| to specify how they interact with a write lock. | | to specify how they interact with a write lock. | |
| | | | |
| 7.2 Write Locks and Lock Tokens | | 7.2 Write Locks and Lock Tokens | |
| | | | |
| A successful request for an exclusive or shared write lock MUST | | A successful request for an exclusive or shared write lock MUST | |
| result in the generation of a unique lock token associated with the | | result in the generation of a unique lock token associated with the | |
| requesting principal. Thus if five principals have a shared write | | requesting principal. Thus if five principals have a shared write | |
| lock on the same resource there will be five lock tokens, one for | | lock on the same resource there will be five lock tokens, one for | |
| each principal. | | each principal. | |
| | | | |
|
| Expires Dec 2002 18 WebDAV (RFC2518) bis June 2002 | | Expires Mar 2003 17 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| 7.3 Write Locks and Properties | | 7.3 Write Locks and Properties | |
| | | | |
| While those without a write lock may not alter a property on a | | While those without a write lock may not alter a property on a | |
| resource it is still possible for the values of live properties to | | resource it is still possible for the values of live properties to | |
| change, even while locked, due to the requirements of their schemas. | | change, even while locked, due to the requirements of their schemas. | |
| Only dead properties and live properties defined to respect locks | | Only dead properties and live properties defined to respect locks | |
| are guaranteed not to change while write locked. | | are guaranteed not to change while write locked. | |
| | | | |
| 7.4 Write Locks and Unmapped URLs | | 7.4 Write Locks and Unmapped URLs | |
| | | | |
| skipping to change at line 954 | | skipping to change at line 942 | |
| | | | |
| A lock request to an unmapped URL should result in the creation of a | | A lock request to an unmapped URL should result in the creation of a | |
| resource that is locked. A subsequent PUT request with the correct | | resource that is locked. A subsequent PUT request with the correct | |
| lock token should normally succeed, and provides the content, | | lock token should normally succeed, and provides the content, | |
| content-type, content-language and other information as appropriate. | | content-type, content-language and other information as appropriate. | |
| | | | |
| In this situation, WebDAV servers compliant with RFC2518 MAY create | | In this situation, WebDAV servers compliant with RFC2518 MAY create | |
| "lock-null" resources which are special and unusual resources. A | | "lock-null" resources which are special and unusual resources. A | |
| lock-null resource: | | lock-null resource: | |
| | | | |
|
| - responds with a 404 or 405 to any DAV method except for PUT, | | - Responds with a 404 or 405 to any DAV method except for PUT, | |
| MKCOL, OPTIONS, PROPFIND, LOCK, UNLOCK. | | MKCOL, OPTIONS, PROPFIND, LOCK, UNLOCK. | |
| - Appears as a member of its parent collection. | | - Appears as a member of its parent collection. | |
| - Disappears (becomes once more an unmapped URL) if its lock goes | | - Disappears (becomes once more an unmapped URL) if its lock goes | |
| away before it is converted to a regular resource. (This must | | away before it is converted to a regular resource. (This must | |
| also happen if it is renamed or moved, or if any parent collection | | also happen if it is renamed or moved, or if any parent collection | |
| is renamed or moved, because locks are tied to URLs). | | is renamed or moved, because locks are tied to URLs). | |
| - May be turned into a regular resource when a PUT request to the | | - May be turned into a regular resource when a PUT request to the | |
| URL is successful. Ceases to be a lock-null resource. | | URL is successful. Ceases to be a lock-null resource. | |
|
| - May be turned into a collection when a MKCOL request to the URL is | | - May be turned into a collection when a MKCOL request to the URL | |
| successful. Ceases to be a lock-null resource | | is successful. Ceases to be a lock-null resource | |
| - Has defined values for lockdiscovery and supportedlock properties. | | - Has defined values for lockdiscovery and supportedlock | |
| | | properties. | |
| | | | |
| However, interoperability and compliance problems have been found | | However, interoperability and compliance problems have been found | |
| with lock-null resources. Therefore, they are deprecated. WebDAV | | with lock-null resources. Therefore, they are deprecated. WebDAV | |
| servers compliant with this document SHOULD create regular locked | | servers compliant with this document SHOULD create regular locked | |
| empty resources, which behave in every way as if they were a normal | | empty resources, which behave in every way as if they were a normal | |
| resource. A locked empty resource: | | resource. A locked empty resource: | |
| | | | |
|
| - Can be downloaded, deleted, moved, copied, and in all ways behave | | Expires Mar 2003 18 | |
| as a regular resource, not a lock-null resource. | | | |
| | | | |
|
| Expires Dec 2002 19 WebDAV (RFC2518) bis June 2002 | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
|
| | | - Can be downloaded, deleted, moved, copied, and in all ways behave | |
| | | as a regular resource, not a lock-null resource. | |
| - Appears as a member of its parent collection. | | - Appears as a member of its parent collection. | |
| - SHOULD NOT disappear when its lock goes away (clients must | | - SHOULD NOT disappear when its lock goes away (clients must | |
| therefore be responsible for cleaning up their own mess, as with | | therefore be responsible for cleaning up their own mess, as with | |
| any other operation) | | any other operation) | |
| - SHOULD default to a content-type of "application/octet-stream". | | - SHOULD default to a content-type of "application/octet-stream". | |
|
| - SHOULD default to reasonable, or reasonably blank, values for | | - MAY NOT have values for properties like getcontentlanguage which | |
| other properties like getcontentlanguage. | | havenÆt been specified yet by the client. | |
| - May have content added with a PUT request. MUST be able to change | | - May have content added with a PUT request. MUST be able to | |
| content type. | | change content type. | |
| - MUST NOT be turned into a collection. A MKCOL request must fail | | - MUST NOT be turned into a collection. A MKCOL request must fail | |
| as it would to any existing resource. | | as it would to any existing resource. | |
| - MUST have defined values for lockdiscovery and supportedlock | | - MUST have defined values for lockdiscovery and supportedlock | |
| properties. | | properties. | |
| - The response MUST indicate that a resource was created, by use of | | - The response MUST indicate that a resource was created, by use of | |
| the "201 Created" response code (a LOCK request to an existing | | the "201 Created" response code (a LOCK request to an existing | |
| resource instead will result in 200 OK). The body must still | | resource instead will result in 200 OK). The body must still | |
| include the lockdiscovery property, as with a LOCK request to an | | include the lockdiscovery property, as with a LOCK request to an | |
| existing resource. | | existing resource. | |
| | | | |
| | | | |
| skipping to change at line 1019 | | skipping to change at line 1009 | |
| a DELETE to remove a resource which has a URI which is an existing | | a DELETE to remove a resource which has a URI which is an existing | |
| internal member URI of a write locked collection, this request MUST | | internal member URI of a write locked collection, this request MUST | |
| fail if the principal does not have a write lock on the collection. | | fail if the principal does not have a write lock on the collection. | |
| | | | |
| However, if a write lock request is issued to a collection | | However, if a write lock request is issued to a collection | |
| containing member URIs identifying resources that are currently | | containing member URIs identifying resources that are currently | |
| locked in a manner which conflicts with the write lock, the request | | locked in a manner which conflicts with the write lock, the request | |
| MUST fail with a 423 (Locked) status code. | | MUST fail with a 423 (Locked) status code. | |
| | | | |
| If a lock owner causes the URI of a resource to be added as an | | If a lock owner causes the URI of a resource to be added as an | |
|
| internal member URI of a locked collection then the new resource | | internal member URI of a depth-infinity locked collection then the | |
| MUST be automatically added to the lock. This is the only mechanism | | new resource MUST be automatically added to the lock. This is the | |
| that allows a resource to be added to a write lock. Thus, for | | only mechanism that allows a resource to be added to a write lock. | |
| example, if the collection /a/b/ is write locked and the resource /c | | Thus, for example, if the collection /a/b/ is write locked and the | |
| is moved to /a/b/c then resource /a/b/c will be added to the write | | resource /c is moved to /a/b/c then resource /a/b/c will be added to | |
| lock. | | the write lock. | |
| | | | |
|
| 7.6 Write Locks and the If Request Header | | Expires Mar 2003 19 | |
| | | | |
|
| Expires Dec 2002 20 WebDAV (RFC2518) bis June 2002 | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| | | 7.6 Write Locks and the If Request Header | |
| | | | |
| If a user agent is not required to have knowledge about a lock when | | If a user agent is not required to have knowledge about a lock when | |
| requesting an operation on a locked resource, the following scenario | | requesting an operation on a locked resource, the following scenario | |
| might occur. Program A, run by User A, takes out a write lock on a | | might occur. Program A, run by User A, takes out a write lock on a | |
| resource. Program B, also run by User A, has no knowledge of the | | resource. Program B, also run by User A, has no knowledge of the | |
| lock taken out by Program A, yet performs a PUT to the locked | | lock taken out by Program A, yet performs a PUT to the locked | |
| resource. In this scenario, the PUT succeeds because locks are | | resource. In this scenario, the PUT succeeds because locks are | |
| associated with a principal, not a program, and thus program B, | | associated with a principal, not a program, and thus program B, | |
| because it is acting with principal AÆs credential, is allowed to | | because it is acting with principal AÆs credential, is allowed to | |
| perform the PUT. However, had program B known about the lock, it | | perform the PUT. However, had program B known about the lock, it | |
| | | | |
| skipping to change at line 1052 | | skipping to change at line 1044 | |
| from accidentally ignoring locks taken out by other programs with | | from accidentally ignoring locks taken out by other programs with | |
| the same authorization. | | the same authorization. | |
| | | | |
| In order to prevent these collisions a lock token MUST be submitted | | In order to prevent these collisions a lock token MUST be submitted | |
| by an authorized principal in the If header for all locked resources | | by an authorized principal in the If header for all locked resources | |
| that a method may interact with or the method MUST fail. For | | that a method may interact with or the method MUST fail. For | |
| example, if a resource is to be moved and both the source and | | example, if a resource is to be moved and both the source and | |
| destination are locked then two lock tokens must be submitted, one | | destination are locked then two lock tokens must be submitted, one | |
| for the source and the other for the destination. | | for the source and the other for the destination. | |
| | | | |
|
| 7.6.1 Example - Write Lock | | Example - Write Lock | |
| | | | |
| >>Request | | >>Request | |
| | | | |
| COPY /~fielding/index.html HTTP/1.1 | | COPY /~fielding/index.html HTTP/1.1 | |
| Host: www.ics.uci.edu | | Host: www.ics.uci.edu | |
| Destination: http://www.ics.uci.edu/users/f/fielding/index.html | | Destination: http://www.ics.uci.edu/users/f/fielding/index.html | |
| If: <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>) | | (<opaquelocktoken:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>) | |
| | | | |
| >>Response | | >>Response | |
| | | | |
| skipping to change at line 1079 | | skipping to change at line 1071 | |
| a COPY, and hence unaffected by the write lock. In this example, | | a COPY, and hence unaffected by the write lock. In this example, | |
| user agent authentication has previously occurred via a mechanism | | user agent authentication has previously occurred via a mechanism | |
| outside the scope of the HTTP protocol, in the underlying transport | | outside the scope of the HTTP protocol, in the underlying transport | |
| layer. | | layer. | |
| | | | |
| 7.7 Write Locks and COPY/MOVE | | 7.7 Write Locks and COPY/MOVE | |
| | | | |
| A COPY method invocation MUST NOT duplicate any write locks active | | A COPY method invocation MUST NOT duplicate any write locks active | |
| on the source. However, as previously noted, if the COPY copies the | | on the source. However, as previously noted, if the COPY copies the | |
| | | | |
|
| Expires Dec 2002 21 WebDAV (RFC2518) bis June 2002 | | Expires Mar 2003 20 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| resource into a collection that is locked with "Depth: infinity", | | resource into a collection that is locked with "Depth: infinity", | |
| then the resource will be added to the lock. | | then the resource will be added to the lock. | |
| | | | |
| A successful MOVE request on a write locked resource MUST NOT move | | A successful MOVE request on a write locked resource MUST NOT move | |
| the write lock with the resource. However, the resource is subject | | the write lock with the resource. However, the resource is subject | |
| to being added to an existing lock at the destination, as specified | | to being added to an existing lock at the destination, as specified | |
|
| Comment : If a resource has in section 7.5. For example, if the MOVE makes the resource a child a "move lock" on it (a new of a collection that is locked with "Depth: infinity", then the type I just made up) then resource will be added to that collection's lock. Additionally, if a the MOVE should fail JUST because it is locked. resource locked with "Depth: infinity" is moved to a destination | | in section 7.5. 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 | | that is within the scope of the same lock (e.g., within the | |
| namespace tree covered by the lock), the moved resource will again | | namespace tree covered by the lock), the moved resource will again | |
| be a added to the lock. In both these examples, as specified in | | be a added to the lock. In both these examples, as specified in | |
| section 7.6, an If header must be submitted containing a lock token | | section 7.6, an If header must be submitted containing a lock token | |
| for both the source and destination. | | for both the source and destination. | |
| | | | |
| 7.8 Refreshing Write Locks | | 7.8 Refreshing Write Locks | |
| | | | |
| A client MUST NOT submit the same write lock request twice. Note | | A client MUST NOT submit the same write lock request twice. Note | |
| that a client is always aware it is resubmitting the same lock | | that a client is always aware it is resubmitting the same lock | |
| | | | |
| skipping to change at line 1111 | | skipping to change at line 1108 | |
| However, a client may submit a LOCK method with an If header but | | However, a client may submit a LOCK method with an If header but | |
| without a body. This form of LOCK MUST only be used to "refresh" a | | without a body. This form of LOCK MUST only be used to "refresh" a | |
| lock. Meaning, at minimum, that any timers associated with the lock | | lock. Meaning, at minimum, that any timers associated with the lock | |
| MUST be re-set. | | MUST be re-set. | |
| | | | |
| A server may return a Timeout header with a lock refresh that is | | A server may return a Timeout header with a lock refresh that is | |
| different than the Timeout header returned when the lock was | | different than the Timeout header returned when the lock was | |
| originally requested. Additionally clients may submit Timeout | | originally requested. Additionally clients may submit Timeout | |
| headers of arbitrary value with their lock refresh requests. | | headers of arbitrary value with their lock refresh requests. | |
| Servers, as always, may ignore Timeout headers submitted by the | | Servers, as always, may ignore Timeout headers submitted by the | |
|
| client. | | client. Note that timeout is measured in seconds remaining until | |
| | | expiration. | |
| | | | |
| If an error is received in response to a refresh LOCK request the | | If an error is received in response to a refresh LOCK request the | |
| client SHOULD assume that the lock was not refreshed. | | client SHOULD assume that the lock was not refreshed. | |
| | | | |
| 8 HTTP Methods for Distributed Authoring | | 8 HTTP Methods for Distributed Authoring | |
| | | | |
|
| The following new HTTP methods use XML as a request and response | | 8.1 General request and response handling | |
| format. All DAV compliant clients and resources MUST use XML | | | |
| parsers that are compliant with [REC-XML]. All XML used in either | | Use of XML | |
| requests or responses MUST be, at minimum, well formed. If a server | | | |
| receives ill-formed XML in a request it MUST reject the entire | | Some of the following new HTTP methods use XML as a request and | |
| request with a 400 (Bad Request). If a client receives ill-formed | | response format. All DAV compliant clients and resources MUST use | |
| XML in a response then it MUST NOT assume anything about the outcome | | XML parsers that are compliant with [REC-XML]. All XML used in | |
| of the executed method and SHOULD treat the server as | | either requests or responses MUST be, at minimum, well formed. If a | |
| | | server receives ill-formed XML in a request it MUST reject the | |
| | | entire request with a 400 (Bad Request). If a client receives ill- | |
| | | formed XML in a response then it MUST NOT assume anything about the | |
| | | outcome of the executed method and SHOULD treat the server as | |
| malfunctioning. | | malfunctioning. | |
| | | | |
|
| Expires Dec 2002 22 WebDAV (RFC2518) bis June 2002 | | Expires Mar 2003 21 | |
| | | | |
|
| 8.1 PROPFIND | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| | | Required Bodies in Requests | |
| | | | |
| | | Some of these new methods do not define bodies. Servers MUST | |
| | | examine all requests for a body, even when a body was not expected. | |
| | | In cases where a request body is present but would be ignored by a | |
| | | server, the server MUST reject the request with 415 (Unsupported | |
| | | Media Type). This informs the client (which may have been | |
| | | attempting to use an extension) that the body could not be processed | |
| | | as they intended. | |
| | | | |
| | | Use of Location header in responses | |
| | | | |
| | | When the Location header is used in a response, it is used by the | |
| | | server to indicate the preferred address for the target resource of | |
| | | the request. Whenever the server has a preferred address, it should | |
| | | use that address consistently. This means that when a response | |
| | | contains a Location header, all the URLs in the response body (e.g. | |
| | | a Multi-Status) should be consistent. | |
| | | | |
| | | Required Response Headers | |
| | | | |
| | | Note that HTTP 1.1 requires the Date header in all responses. | |
| | | | |
| | | HTTP 1.1 suggests the use of the ETag header in responses to GET and | |
| | | PUT requests. Correct use of ETags is even more important in a | |
| | | distributed authoring environment, because ETags are necessary to | |
| | | avoid the lost-update problem. WebDAV servers MUST support ETags | |
| | | correctly and MUST return the ETag header in all GET and PUT | |
| | | responses. | |
| | | | |
| | | Because clients may be forced to prompt users or throw away changed | |
| | | content if the ETag changes, a WebDAV server MUST not change the | |
| | | ETag (or getlastmodified value) for a resource when only its | |
| | | property values change. The ETag represents the state of the body or | |
| | | contents of the resource. There is no similar way to tell if | |
| | | properties have changed. | |
| | | | |
| | | 8.2 PROPFIND | |
| | | | |
| The PROPFIND method retrieves properties defined on the resource | | The PROPFIND method retrieves properties defined on the resource | |
| identified by the Request-URI, if the resource does not have any | | identified by the Request-URI, if the resource does not have any | |
| internal members, or on the resource identified by the Request-URI | | internal members, or on the resource identified by the Request-URI | |
| and potentially its member resources, if the resource is a | | and potentially its member resources, if the resource is a | |
| collection that has internal member URIs. All DAV compliant | | collection that has internal member URIs. All DAV compliant | |
| resources MUST support the PROPFIND method and the propfind XML | | resources MUST support the PROPFIND method and the propfind XML | |
|
| element (section Error! Reference source not found.) along with all | | element (section 13.25) along with all XML elements defined for use | |
| XML elements defined for use with that element. | | with that element. | |
| | | | |
| A client may submit a Depth header with a value of "0", "1", or | | A client may submit a Depth header with a value of "0", "1", or | |
| "infinity" with a PROPFIND on a collection resource with internal | | "infinity" with a PROPFIND on a collection resource with internal | |
| member URIs. DAV compliant servers MUST support the "0", "1" and | | member URIs. DAV compliant servers MUST support the "0", "1" and | |
| "infinity" behaviors. By default, the PROPFIND method without a | | "infinity" behaviors. By default, the PROPFIND method without a | |
| Depth header MUST act as if a "Depth: infinity" header was included. | | Depth header MUST act as if a "Depth: infinity" header was included. | |
| | | | |
|
| | | Expires Mar 2003 22 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| A client may submit a propfind XML element in the body of the | | A client may submit a propfind XML element in the body of the | |
| request method describing what information is being requested. It | | request method describing what information is being requested. It | |
|
| is possible to request particular property values, all property | | is possible to request: | |
| values, or a list of the names of the resourceÆs properties. A | | - Request particular property values, by naming the properties | |
| client may choose not to submit a request body. An empty PROPFIND | | desired | |
| request body MUST be treated as a request for the names and values | | - Request property values for those properties defined in this | |
| of all properties. | | specification plus dead properties, by using æallpropÆ element | |
| | | - Request a list of names of all the properties defined on the | |
| | | resource, by using the æpropnameÆ element. | |
| | | | |
|
| Clients MUST not send allprop requests in any form (either the empty | | A client may choose not to submit a request body. An empty PROPFIND | |
| body PROPFIND or the specific allprop element), because allprop is | | request body MUST be treated as if it were an æallpropÆ request. | |
| being removed. WebDAV servers increasingly have expensively- | | | |
| calculated or lengthy properties (see [RFC3253] and [TODO: ref ACL | | Note that æallpropÆ does not return values for all properties. | |
| RFC when available]) and do not return all properties already. | | WebDAV servers increasingly have expensively-calculated or lengthy | |
| Instead, WebDAV clients can use propname requests to discover what | | properties (see [RFC3253] and [TODO: ref ACL RFC when available]) | |
| properties exist, and request named properties when retrieving | | and do not return all properties already. Instead, WebDAV clients | |
| values. A WebDAV server MAY omit certain live properties from other | | can use propname requests to discover what live properties exist, | |
| specifications when responding to an allprop request from an older | | and request named properties when retrieving values. A WebDAV | |
| client, and MAY return only custom (dead) properties and those | | server MAY omit certain live properties from other specifications | |
| defined in this specification. | | when responding to an allprop request from an older client, and MAY | |
| | | return only custom (dead) properties and those defined in this | |
| | | specification. | |
| | | | |
| All servers MUST support returning a response of content type | | All servers MUST support returning a response of content type | |
| text/xml or application/xml that contains a multistatus XML element | | text/xml or application/xml that contains a multistatus XML element | |
| that describes the results of the attempts to retrieve the various | | that describes the results of the attempts to retrieve the various | |
| properties. | | properties. | |
| | | | |
| If there is an error retrieving a property then a proper error | | If there is an error retrieving a property then a proper error | |
| result MUST be included in the response. A request to retrieve the | | result MUST be included in the response. A request to retrieve the | |
| value of a property which does not exist is an error and MUST be | | value of a property which does not exist is an error and MUST be | |
| noted, if the response uses a multistatus XML element, with a | | noted, if the response uses a multistatus XML element, with a | |
| response XML element which contains a 404 (Not Found) status value. | | response XML element which contains a 404 (Not Found) status value. | |
| | | | |
| Consequently, the multistatus XML element for a collection resource | | Consequently, the multistatus XML element for a collection resource | |
| with member URIs MUST include a response XML element for each member | | with member URIs MUST include a response XML element for each member | |
| URI of the collection, to whatever depth was requested. Each | | URI of the collection, to whatever depth was requested. Each | |
| response XML element MUST contain an href XML element that gives the | | response XML element MUST contain an href XML element that gives the | |
| URI of the resource on which the properties in the prop XML element | | URI of the resource on which the properties in the prop XML element | |
|
| | | are defined. URLs for collections appearing in the results MUST end | |
| | | in a æ/Æ character. Results for a PROPFIND on a collection resource | |
| | | with internal member URIs are returned as a flat list whose order of | |
| | | entries is not significant. | |
| | | | |
|
| Expires Dec 2002 23 WebDAV (RFC2518) bis June 2002 | | A server enumerating the members of a collection using absolute URLs | |
| | | in a PROPFIND response MUST use a common prefix in those URLs, and | |
| | | that prefix MUST be the absolute URL used in the response to refer | |
| | | to the parent collection. | |
| | | | |
|
| are defined. Results for a PROPFIND on a collection resource with | | Unless otherwise notified, clients may expect that the URL for the | |
| internal member URIs are returned as a flat list whose order of | | parent collection in the PROPFIND response will be the same URL that | |
| entries is not significant. | | | |
| | | | |
|
| In the case of allprop and propname, if a principal does not have | | Expires Mar 2003 23 | |
| the right to know whether a particular property exists then the | | | |
| property should be silently excluded from the response. | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| | | was used to refer to the parent collection in the PROPFIND request. | |
| | | Servers MAY use an alternate URL for the parent collection in a | |
| | | PROPFIND response, but in this case the server MUST include a | |
| | | Content-Location header whose value is the fully-qualified URL used | |
| | | by the server to refer to the parent collection in this response. | |
| | | | |
| | | Clients expect the fully-qualified URLs of members of a collection | |
| | | to have a common prefix which is the fully-qualified URL of the | |
| | | parent collection itself. | |
| | | | |
| | | URLs in a PROPFIND response body MAY be represented as fully- | |
| | | qualified URLs, in which case they must all contain the full parent | |
| | | collection URL (scheme, host, port, and absolute path). | |
| | | Alternatively, these URLs MAY be absolute paths (not containing | |
| | | scheme, host or port), but in this case they must all still contain | |
| | | the full parent collection path. | |
| | | | |
| | | Properties may be subject to access control. In the case of allprop | |
| | | and propname, if a principal does not have the right to know whether | |
| | | a particular property exists then the property should be silently | |
| | | excluded from the response. | |
| | | | |
| The results of this method SHOULD NOT be cached. | | The results of this method SHOULD NOT be cached. | |
| | | | |
|
| 8.1.1 Example - Retrieving Named Properties | | 8.2.1 Example - Retrieving Named Properties | |
| | | | |
| >>Request | | >>Request | |
| | | | |
| PROPFIND /file HTTP/1.1 | | PROPFIND /file HTTP/1.1 | |
| Host: www.foo.bar | | Host: www.foo.bar | |
| Content-type: text/xml; charset="utf-8" | | Content-type: text/xml; charset="utf-8" | |
| Content-Length: xxxx | | Content-Length: xxxx | |
| | | | |
| <?xml version="1.0" encoding="utf-8" ?> | | <?xml version="1.0" encoding="utf-8" ?> | |
| <D:propfind xmlns:D="DAV:"> | | <D:propfind xmlns:D="DAV:"> | |
| | | | |
| skipping to change at line 1223 | | skipping to change at line 1300 | |
| </D:propfind> | | </D:propfind> | |
| | | | |
| >>Response | | >>Response | |
| | | | |
| HTTP/1.1 207 Multi-Status | | HTTP/1.1 207 Multi-Status | |
| Content-Type: text/xml; charset="utf-8" | | Content-Type: text/xml; charset="utf-8" | |
| Content-Length: xxxx | | Content-Length: xxxx | |
| | | | |
| <?xml version="1.0" encoding="utf-8" ?> | | <?xml version="1.0" encoding="utf-8" ?> | |
| <D:multistatus xmlns:D="DAV:"> | | <D:multistatus xmlns:D="DAV:"> | |
|
| | | | |
| | | Expires Mar 2003 24 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| <D:response xmlns:R="http://www.foo.bar/boxschema/"> | | <D:response xmlns:R="http://www.foo.bar/boxschema/"> | |
| <D:href>http://www.foo.bar/file</D:href> | | <D:href>http://www.foo.bar/file</D:href> | |
| <D:propstat> | | <D:propstat> | |
| <D:prop> | | <D:prop> | |
| <R:bigbox> | | <R:bigbox> | |
| <R:BoxType>Box type A</R:BoxType> | | <R:BoxType>Box type A</R:BoxType> | |
| </R:bigbox> | | </R:bigbox> | |
| <R:author> | | <R:author> | |
| <R:Name>J.J. Johnson</R:Name> | | <R:Name>J.J. Johnson</R:Name> | |
| </R:author> | | </R:author> | |
| </D:prop> | | </D:prop> | |
|
| | | | |
| Expires Dec 2002 24 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| <D:status>HTTP/1.1 200 OK</D:status> | | <D:status>HTTP/1.1 200 OK</D:status> | |
| </D:propstat> | | </D:propstat> | |
| <D:propstat> | | <D:propstat> | |
| <D:prop><R:DingALing/><R:Random/></D:prop> | | <D:prop><R:DingALing/><R:Random/></D:prop> | |
| <D:status>HTTP/1.1 403 Forbidden</D:status> | | <D:status>HTTP/1.1 403 Forbidden</D:status> | |
| <D:responsedescription> The user does not have access to the | | <D:responsedescription> The user does not have access to the | |
| DingALing property. | | DingALing property. | |
| </D:responsedescription> | | </D:responsedescription> | |
| </D:propstat> | | </D:propstat> | |
| </D:response> | | </D:response> | |
| | | | |
| skipping to change at line 1258 | | skipping to change at line 1337 | |
| </D:responsedescription> | | </D:responsedescription> | |
| </D:multistatus> | | </D:multistatus> | |
| | | | |
| In this example, PROPFIND is executed on a non-collection resource | | In this example, PROPFIND is executed on a non-collection resource | |
| http://www.foo.bar/file. The propfind XML element specifies the | | http://www.foo.bar/file. The propfind XML element specifies the | |
| name of four properties whose values are being requested. In this | | name of four properties whose values are being requested. In this | |
| case only two properties were returned, since the principal issuing | | case only two properties were returned, since the principal issuing | |
| the request did not have sufficient access rights to see the third | | the request did not have sufficient access rights to see the third | |
| and fourth properties. | | and fourth properties. | |
| | | | |
|
| 8.1.2 Example - Using propname to Retrieve all Property Names | | 8.2.2 Example - Using propname to Retrieve all Property Names | |
| | | | |
| >>Request | | >>Request | |
| | | | |
| PROPFIND /container/ HTTP/1.1 | | PROPFIND /container/ HTTP/1.1 | |
| Host: www.foo.bar | | Host: www.foo.bar | |
| Content-Type: text/xml; charset="utf-8" | | Content-Type: text/xml; charset="utf-8" | |
| Content-Length: xxxx | | Content-Length: xxxx | |
| | | | |
| <?xml version="1.0" encoding="utf-8" ?> | | <?xml version="1.0" encoding="utf-8" ?> | |
| <propfind xmlns="DAV:"> | | <propfind xmlns="DAV:"> | |
| <propname/> | | <propname/> | |
| </propfind> | | </propfind> | |
| | | | |
| >>Response | | >>Response | |
| | | | |
| HTTP/1.1 207 Multi-Status | | HTTP/1.1 207 Multi-Status | |
|
| | | | |
| | | Expires Mar 2003 25 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| Content-Type: text/xml; charset="utf-8" | | Content-Type: text/xml; charset="utf-8" | |
| Content-Length: xxxx | | Content-Length: xxxx | |
| | | | |
| <?xml version="1.0" encoding="utf-8" ?> | | <?xml version="1.0" encoding="utf-8" ?> | |
| <multistatus xmlns="DAV:"> | | <multistatus xmlns="DAV:"> | |
| <response> | | <response> | |
| <href>http://www.foo.bar/container/</href> | | <href>http://www.foo.bar/container/</href> | |
| <propstat> | | <propstat> | |
| <prop xmlns:R="http://www.foo.bar/boxschema/"> | | <prop xmlns:R="http://www.foo.bar/boxschema/"> | |
| <R:bigbox/> | | <R:bigbox/> | |
|
| | | | |
| Expires Dec 2002 25 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| <R:author/> | | <R:author/> | |
| <creationdate/> | | <creationdate/> | |
| <displayname/> | | <displayname/> | |
| <resourcetype/> | | <resourcetype/> | |
| <supportedlock/> | | <supportedlock/> | |
| </prop> | | </prop> | |
| <status>HTTP/1.1 200 OK</status> | | <status>HTTP/1.1 200 OK</status> | |
| </propstat> | | </propstat> | |
| </response> | | </response> | |
| <response> | | <response> | |
| | | | |
| skipping to change at line 1326 | | skipping to change at line 1407 | |
| In this example, PROPFIND is invoked on the collection resource | | In this example, PROPFIND is invoked on the collection resource | |
| http://www.foo.bar/container/, with a propfind XML element | | http://www.foo.bar/container/, with a propfind XML element | |
| containing the propname XML element, meaning the name of all | | containing the propname XML element, meaning the name of all | |
| properties should be returned. Since no Depth header is present, it | | properties should be returned. Since no Depth header is present, it | |
| assumes its default value of "infinity", meaning the name of the | | assumes its default value of "infinity", meaning the name of the | |
| properties on the collection and all its progeny should be returned. | | properties on the collection and all its progeny should be returned. | |
| | | | |
| Consistent with the previous example, resource | | Consistent with the previous example, resource | |
| http://www.foo.bar/container/ has six properties defined on it, | | http://www.foo.bar/container/ has six properties defined on it, | |
| http://www.foo.bar/boxschema/bigbox, | | http://www.foo.bar/boxschema/bigbox, | |
|
| | | | |
| | | Expires Mar 2003 26 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| http://www.foo.bar/boxschema/author, DAV:creationdate, | | http://www.foo.bar/boxschema/author, DAV:creationdate, | |
| DAV:displayname, DAV:resourcetype, and DAV:supportedlock. | | DAV:displayname, DAV:resourcetype, and DAV:supportedlock. | |
| | | | |
| The resource http://www.foo.bar/container/index.html, a member of | | The resource http://www.foo.bar/container/index.html, a member of | |
| the "container" collection, has nine properties defined on it, | | the "container" collection, has nine properties defined on it, | |
| http://www.foo.bar/boxschema/bigbox, DAV:creationdate, | | http://www.foo.bar/boxschema/bigbox, DAV:creationdate, | |
| DAV:displayname, DAV:getcontentlength, DAV:getcontenttype, | | DAV:displayname, DAV:getcontentlength, DAV:getcontenttype, | |
| DAV:getetag, DAV:getlastmodified, DAV:resourcetype, and | | DAV:getetag, DAV:getlastmodified, DAV:resourcetype, and | |
| DAV:supportedlock. | | DAV:supportedlock. | |
| | | | |
|
| Expires Dec 2002 26 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| This example also demonstrates the use of XML namespace scoping, and | | This example also demonstrates the use of XML namespace scoping, and | |
| the default namespace. Since the "xmlns" attribute does not contain | | the default namespace. Since the "xmlns" attribute does not contain | |
| an explicit "shorthand name" (prefix) letter, the namespace applies | | an explicit "shorthand name" (prefix) letter, the namespace applies | |
| by default to all enclosed elements. Hence, all elements which do | | by default to all enclosed elements. Hence, all elements which do | |
| not explicitly state the namespace to which they belong are members | | not explicitly state the namespace to which they belong are members | |
| of the "DAV:" namespace schema. | | of the "DAV:" namespace schema. | |
| | | | |
|
| 8.2 PROPPATCH | | 8.3 PROPPATCH | |
| | | | |
| The PROPPATCH method processes instructions specified in the request | | The PROPPATCH method processes instructions specified in the request | |
| body to set and/or remove properties defined on the resource | | body to set and/or remove properties defined on the resource | |
| identified by the Request-URI. | | identified by the Request-URI. | |
| | | | |
| All DAV compliant resources MUST support the PROPPATCH method and | | All DAV compliant resources MUST support the PROPPATCH method and | |
| MUST process instructions that are specified using the | | MUST process instructions that are specified using the | |
| propertyupdate, set, and remove XML elements of the DAV schema. | | propertyupdate, set, and remove XML elements of the DAV schema. | |
| Execution of the directives in this method is, of course, subject to | | Execution of the directives in this method is, of course, subject to | |
| access control constraints. DAV compliant resources SHOULD support | | access control constraints. DAV compliant resources SHOULD support | |
| the setting of arbitrary dead properties. | | the setting of arbitrary dead properties. | |
| | | | |
| The request message body of a PROPPATCH method MUST contain the | | The request message body of a PROPPATCH method MUST contain the | |
| propertyupdate XML element. Instruction processing MUST occur in | | propertyupdate XML element. Instruction processing MUST occur in | |
| the order instructions are received (i.e., from top to bottom). | | the order instructions are received (i.e., from top to bottom). | |
| Instructions MUST either all be executed or none executed. Thus if | | Instructions MUST either all be executed or none executed. Thus if | |
| any error occurs during processing all executed instructions MUST be | | any error occurs during processing all executed instructions MUST be | |
| undone and a proper error result returned. Instruction processing | | undone and a proper error result returned. Instruction processing | |
| details can be found in the definition of the set and remove | | details can be found in the definition of the set and remove | |
|
| instructions in section Error! Reference source not found.. | | instructions in sections 13.23 and section 13.24. | |
| | | | |
|
| 8.2.1 Status Codes for use with 207 (Multi-Status) | | 8.3.1 Status Codes for use with 207 (Multi-Status) | |
| | | | |
| The following are examples of response codes one would expect to be | | The following are examples of response codes one would expect to be | |
| used in a 207 (Multi-Status) response for this method. Note, | | used in a 207 (Multi-Status) response for this method. Note, | |
| however, that unless explicitly prohibited any 2/3/4/5xx series | | however, that unless explicitly prohibited any 2/3/4/5xx series | |
| response code may be used in a 207 (Multi-Status) response. | | response code may be used in a 207 (Multi-Status) response. | |
| | | | |
| 200 (OK) - The command succeeded. As there can be a mixture of sets | | 200 (OK) - The command succeeded. As there can be a mixture of sets | |
| and removes in a body, a 201 (Created) seems inappropriate. | | and removes in a body, a 201 (Created) seems inappropriate. | |
| | | | |
| 403 (Forbidden) - The client, for reasons the server chooses not to | | 403 (Forbidden) - The client, for reasons the server chooses not to | |
| specify, cannot alter one of the properties. | | specify, cannot alter one of the properties. | |
| | | | |
|
| | | Expires Mar 2003 27 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| 409 (Conflict) - The client has provided a value whose semantics are | | 409 (Conflict) - The client has provided a value whose semantics are | |
| not appropriate for the property. This includes trying to set read- | | not appropriate for the property. This includes trying to set read- | |
| only properties. | | only properties. | |
| | | | |
| 423 (Locked) - The specified resource is locked and the client | | 423 (Locked) - The specified resource is locked and the client | |
| either is not a lock owner or the lock type requires a lock token to | | either is not a lock owner or the lock type requires a lock token to | |
| be submitted and the client did not submit it. | | be submitted and the client did not submit it. | |
| | | | |
|
| Expires Dec 2002 27 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| 507 (Insufficient Storage) - The server did not have sufficient | | 507 (Insufficient Storage) - The server did not have sufficient | |
| space to record the property. | | space to record the property. | |
| | | | |
|
| 8.2.2 Example - PROPPATCH | | 8.3.2 Example - PROPPATCH | |
| | | | |
| >>Request | | >>Request | |
| | | | |
| PROPPATCH /bar.html HTTP/1.1 | | PROPPATCH /bar.html HTTP/1.1 | |
| Host: www.foo.com | | Host: www.foo.com | |
| Content-Type: text/xml; charset="utf-8" | | Content-Type: text/xml; charset="utf-8" | |
| Content-Length: xxxx | | Content-Length: xxxx | |
| | | | |
| <?xml version="1.0" encoding="utf-8" ?> | | <?xml version="1.0" encoding="utf-8" ?> | |
| <D:propertyupdate xmlns:D="DAV:" | | <D:propertyupdate xmlns:D="DAV:" | |
| | | | |
| skipping to change at line 1431 | | skipping to change at line 1517 | |
| Content-Type: text/xml; charset="utf-8" | | Content-Type: text/xml; charset="utf-8" | |
| Content-Length: xxxx | | Content-Length: xxxx | |
| | | | |
| <?xml version="1.0" encoding="utf-8" ?> | | <?xml version="1.0" encoding="utf-8" ?> | |
| <D:multistatus xmlns:D="DAV:" | | <D:multistatus xmlns:D="DAV:" | |
| xmlns:Z="http://www.w3.com/standards/z39.50"> | | xmlns:Z="http://www.w3.com/standards/z39.50"> | |
| <D:response> | | <D:response> | |
| <D:href>http://www.foo.com/bar.html</D:href> | | <D:href>http://www.foo.com/bar.html</D:href> | |
| <D:propstat> | | <D:propstat> | |
| <D:prop><Z:Authors/></D:prop> | | <D:prop><Z:Authors/></D:prop> | |
|
| | | | |
| | | Expires Mar 2003 28 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| <D:status>HTTP/1.1 424 Failed Dependency</D:status> | | <D:status>HTTP/1.1 424 Failed Dependency</D:status> | |
| </D:propstat> | | </D:propstat> | |
| <D:propstat> | | <D:propstat> | |
| <D:prop><Z:Copyright-Owner/></D:prop> | | <D:prop><Z:Copyright-Owner/></D:prop> | |
| <D:status>HTTP/1.1 409 Conflict</D:status> | | <D:status>HTTP/1.1 409 Conflict</D:status> | |
| </D:propstat> | | </D:propstat> | |
|
| | | | |
| Expires Dec 2002 28 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| <D:responsedescription> Copyright Owner can not be deleted or | | <D:responsedescription> Copyright Owner can not be deleted or | |
| altered.</D:responsedescription> | | altered.</D:responsedescription> | |
| </D:response> | | </D:response> | |
| </D:multistatus> | | </D:multistatus> | |
| | | | |
| In this example, the client requests the server to set the value of | | In this example, the client requests the server to set the value of | |
| the "Authors" property in the "http://www.w3.com/standards/z39.50/" | | the "Authors" property in the "http://www.w3.com/standards/z39.50/" | |
| namespace, and to remove the property "Copyright-Owner" in the | | namespace, and to remove the property "Copyright-Owner" in the | |
| "http://www.w3.com/standards/z39.50/" namespace. Since the | | "http://www.w3.com/standards/z39.50/" namespace. Since the | |
| Copyright-Owner property could not be removed, no property | | Copyright-Owner property could not be removed, no property | |
| modifications occur. The 424 (Failed Dependency) status code for | | modifications occur. The 424 (Failed Dependency) status code for | |
| the Authors property indicates this action would have succeeded if | | the Authors property indicates this action would have succeeded if | |
| it were not for the conflict with removing the Copyright-Owner | | it were not for the conflict with removing the Copyright-Owner | |
| property. | | property. | |
| | | | |
|
| 8.3 MKCOL Method | | 8.4 MKCOL Method | |
| | | | |
| The MKCOL method is used to create a new collection. All DAV | | The MKCOL method is used to create a new collection. All DAV | |
| compliant resources MUST support the MKCOL method. | | compliant resources MUST support the MKCOL method. | |
| | | | |
|
| 8.3.1 Request | | | |
| | | | |
| MKCOL creates a new collection resource at the location specified by | | MKCOL creates a new collection resource at the location specified by | |
| the Request-URI. If the resource identified by the Request-URI is | | the Request-URI. If the resource identified by the Request-URI is | |
| non-null then the MKCOL MUST fail. During MKCOL processing, a | | non-null then the MKCOL MUST fail. During MKCOL processing, a | |
| server MUST make the Request-URI a member of its parent collection, | | server MUST make the Request-URI a member of its parent collection, | |
| unless the Request-URI is "/". If no such ancestor exists, the | | unless the Request-URI is "/". If no such ancestor exists, the | |
| method MUST fail. When the MKCOL operation creates a new collection | | method MUST fail. When the MKCOL operation creates a new collection | |
| resource, all ancestors MUST already exist, or the method MUST fail | | resource, all ancestors MUST already exist, or the method MUST fail | |
| with a 409 (Conflict) status code. For example, if a request to | | 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/ | | create collection /a/b/c/d/ is made, and neither /a/b/ nor /a/b/c/ | |
| exists, the request must fail. | | exists, the request must fail. | |
| | | | |
| When MKCOL is invoked without a request body, the newly created | | When MKCOL is invoked without a request body, the newly created | |
| collection SHOULD have no members. | | collection SHOULD have no members. | |
| | | | |
| A MKCOL request message may contain a message body. The behavior of | | A MKCOL request message may contain a message body. The behavior of | |
| a MKCOL request when the body is present is limited to creating | | a MKCOL request when the body is present is limited to creating | |
| collections, members of a collection, bodies of members and | | collections, members of a collection, bodies of members and | |
| properties on the collections or members. If the server receives a | | properties on the collections or members. If the server receives a | |
| MKCOL request entity type it does not support or understand it MUST | | MKCOL request entity type it does not support or understand it MUST | |
|
| respond with a 415 (Unsupported Media Type) status code. The exact | | respond with a 415 (Unsupported Media Type) status code. If the | |
| behavior of MKCOL for various request media types is undefined in | | server decides to reject the request based on the presence of an | |
| this document, and will be specified in separate documents. | | entity or the type of an entity, it should use the 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. | |
| | | | |
|
| 8.3.2 Status Codes | | Expires Mar 2003 29 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| | | Status Codes | |
| | | | |
| Responses from a MKCOL request MUST NOT be cached as MKCOL has non- | | Responses from a MKCOL request MUST NOT be cached as MKCOL has non- | |
| idempotent semantics. | | idempotent semantics. | |
| | | | |
|
| Expires Dec 2002 29 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| 201 (Created) - The collection or structured resource was created in | | 201 (Created) - The collection or structured resource was created in | |
| its entirety. | | its entirety. | |
| | | | |
| 403 (Forbidden) - This indicates at least one of two conditions: 1) | | 403 (Forbidden) - This indicates at least one of two conditions: 1) | |
| the server does not allow the creation of collections at the given | | the server does not allow the creation of collections at the given | |
| location in its namespace, or 2) the parent collection of the | | location in its namespace, or 2) the parent collection of the | |
| Request-URI exists but cannot accept members. | | Request-URI exists but cannot accept members. | |
| | | | |
| 405 (Method Not Allowed) - MKCOL can only be executed on a | | 405 (Method Not Allowed) - MKCOL can only be executed on a | |
| deleted/non-existent resource. | | deleted/non-existent resource. | |
| | | | |
| 409 (Conflict) - A collection cannot be made at the Request-URI | | 409 (Conflict) - A collection cannot be made at the Request-URI | |
|
| until one or more intermediate collections have been created. | | until one or more intermediate collections have been created. The | |
| | | server MUST NOT create those intermediate collections automatically. | |
| | | | |
| 415 (Unsupported Media Type)- The server does not support the | | 415 (Unsupported Media Type)- The server does not support the | |
| request type of the body. | | request type of the body. | |
| | | | |
| 507 (Insufficient Storage) - The resource does not have sufficient | | 507 (Insufficient Storage) - The resource does not have sufficient | |
| space to record the state of the resource after the execution of | | space to record the state of the resource after the execution of | |
| this method. | | this method. | |
| | | | |
|
| 8.3.3 Example - MKCOL | | 8.4.1 Example - MKCOL | |
| | | | |
| This example creates a collection called /webdisc/xfiles/ on the | | This example creates a collection called /webdisc/xfiles/ on the | |
| server www.server.org. | | server www.server.org. | |
| | | | |
| >>Request | | >>Request | |
| | | | |
| MKCOL /webdisc/xfiles/ HTTP/1.1 | | MKCOL /webdisc/xfiles/ HTTP/1.1 | |
| Host: www.server.org | | Host: www.server.org | |
| | | | |
| >>Response | | >>Response | |
| | | | |
| HTTP/1.1 201 Created | | HTTP/1.1 201 Created | |
| | | | |
|
| 8.4 GET, HEAD for Collections | | 8.5 GET, HEAD for Collections | |
| | | | |
| The semantics of GET are unchanged when applied to a collection, | | The semantics of GET are unchanged when applied to a collection, | |
| since GET is defined as, "retrieve whatever information (in the form | | since GET is defined as, "retrieve whatever information (in the form | |
|
| of an entity) is identified by the Request-URI" [RFC2068]. GET when | | of an entity) is identified by the Request-URI" [RFC2616]. GET when | |
| applied to a collection may return the contents of an "index.html" | | applied to a collection may return the contents of an "index.html" | |
| resource, a human-readable view of the contents of the collection, | | resource, a human-readable view of the contents of the collection, | |
| or something else altogether. Hence it is possible that the result | | 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 a GET on a collection will bear no correlation to the membership | |
| of the collection. | | of the collection. | |
| | | | |
|
| Expires Dec 2002 30 WebDAV (RFC2518) bis June 2002 | | Expires Mar 2003 30 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| Similarly, since the definition of HEAD is a GET without a response | | Similarly, since the definition of HEAD is a GET without a response | |
| message body, the semantics of HEAD are unmodified when applied to | | message body, the semantics of HEAD are unmodified when applied to | |
| collection resources. | | collection resources. | |
| | | | |
|
| 8.5 POST for Collections | | 8.6 POST for Collections | |
| | | | |
| Since by definition the actual function performed by POST is | | Since by definition the actual function performed by POST is | |
| determined by the server and often depends on the particular | | determined by the server and often depends on the particular | |
| resource, the behavior of POST when applied to collections cannot be | | resource, the behavior of POST when applied to collections cannot be | |
| meaningfully modified because it is largely undefined. Thus the | | meaningfully modified because it is largely undefined. Thus the | |
| semantics of POST are unmodified when applied to a collection. | | semantics of POST are unmodified when applied to a collection. | |
| | | | |
|
| 8.6 DELETE | | 8.7 DELETE | |
| | | | |
|
| 8.6.1 DELETE for Non-Collection Resources | | DELETE for Non-Collection Resources | |
| | | | |
| If the DELETE method is issued to a non-collection resource whose | | If the DELETE method is issued to a non-collection resource whose | |
| URIs are an internal member of one or more collections, then during | | URIs are an internal member of one or more collections, then during | |
| DELETE processing a server MUST remove any URI for the resource | | DELETE processing a server MUST remove any URI for the resource | |
| identified by the Request-URI from collections which contain it as a | | identified by the Request-URI from collections which contain it as a | |
| member. | | member. | |
| | | | |
|
| 8.6.2 DELETE for Collections | | DELETE for Collections | |
| | | | |
| The DELETE method on a collection MUST act as if a "Depth: infinity" | | The DELETE method on a collection MUST act as if a "Depth: infinity" | |
| header was used on it. A client MUST NOT submit a Depth header with | | header was used on it. A client MUST NOT submit a Depth header with | |
| a DELETE on a collection with any value but infinity. | | a DELETE on a collection with any value but infinity. | |
| | | | |
| DELETE instructs that the collection specified in the Request-URI | | DELETE instructs that the collection specified in the Request-URI | |
| and all resources identified by its internal member URIs are to be | | and all resources identified by its internal member URIs are to be | |
| deleted. | | deleted. | |
| | | | |
| If any resource identified by a member URI cannot be deleted then | | If any resource identified by a member URI cannot be deleted then | |
| | | | |
| skipping to change at line 1584 | | skipping to change at line 1678 | |
| namespace consistency. | | namespace consistency. | |
| | | | |
| Any headers included with DELETE MUST be applied in processing every | | Any headers included with DELETE MUST be applied in processing every | |
| resource to be deleted. | | resource to be deleted. | |
| | | | |
| When the DELETE method has completed processing it MUST result in a | | When the DELETE method has completed processing it MUST result in a | |
| consistent namespace. | | consistent namespace. | |
| | | | |
| If an error occurs with a resource other than the resource | | If an error occurs with a resource other than the resource | |
| identified in the Request-URI then the response MUST be a 207 | | identified in the Request-URI then the response MUST be a 207 | |
|
| (Multi-Status). 424 (Failed Dependency) errors SHOULD NOT be in the | | (Multi-Status), and the errored resourceÆs URL MUST appear with the | |
| 207 (Multi-Status). They can be safely left out because the client | | specific error. | |
| will know that the ancestors of a resource could not be deleted when | | | |
| the client receives an error for the ancestor's progeny. | | | |
| | | | |
|
| Expires Dec 2002 31 WebDAV (RFC2518) bis June 2002 | | 424 (Failed Dependency) errors SHOULD NOT 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 SHOULD NOT be returned in the 207 (Multi- | |
| | | | |
|
| Additionally 204 (No Content) errors SHOULD NOT be returned in the | | Expires Mar 2003 31 | |
| 207 (Multi-Status). The reason for this prohibition is that 204 (No | | | |
| Content) is the default success code. | | | |
| | | | |
|
| 8.6.2.1 Example - DELETE | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| | | Status). The reason for this prohibition is that 204 (No Content) | |
| | | is the default success code. | |
| | | | |
| | | 8.7.1 Example - DELETE | |
| | | | |
| >>Request | | >>Request | |
| | | | |
| DELETE /container/ HTTP/1.1 | | DELETE /container/ HTTP/1.1 | |
| Host: www.foo.bar | | Host: www.foo.bar | |
| | | | |
| >>Response | | >>Response | |
| | | | |
| HTTP/1.1 207 Multi-Status | | HTTP/1.1 207 Multi-Status | |
| Content-Type: text/xml; charset="utf-8" | | Content-Type: text/xml; charset="utf-8" | |
| | | | |
| skipping to change at line 1626 | | skipping to change at line 1725 | |
| In this example the attempt to delete | | In this example the attempt to delete | |
| http://www.foo.bar/container/resource3 failed because it is locked, | | http://www.foo.bar/container/resource3 failed because it is locked, | |
| and no lock token was submitted with the request. Consequently, the | | and no lock token was submitted with the request. Consequently, the | |
| attempt to delete http://www.foo.bar/container/ also failed. Thus | | attempt to delete http://www.foo.bar/container/ also failed. Thus | |
| the client knows that the attempt to delete | | the client knows that the attempt to delete | |
| http://www.foo.bar/container/ must have also failed since the parent | | http://www.foo.bar/container/ must have also failed since the parent | |
| can not be deleted unless its child has also been deleted. Even | | 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 | | though a Depth header has not been included, a depth of infinity is | |
| assumed because the method is on a collection. | | assumed because the method is on a collection. | |
| | | | |
|
| 8.7 PUT | | 8.8 PUT | |
| | | | |
|
| 8.7.1 PUT for Non-Collection Resources | | PUT for Non-Collection Resources | |
| | | | |
| A PUT performed on an existing resource replaces the GET response | | A PUT performed on an existing resource replaces the GET response | |
| entity of the resource. Properties defined on the resource may be | | entity of the resource. Properties defined on the resource may be | |
| recomputed during PUT processing but are not otherwise affected. | | recomputed during PUT processing but are not otherwise affected. | |
| For example, if a server recognizes the content type of the request | | For example, if a server recognizes the content type of the request | |
| body, it may be able to automatically extract information that could | | body, it may be able to automatically extract information that could | |
| be profitably exposed as properties. | | be profitably exposed as properties. | |
| | | | |
| A PUT that would result in the creation of a resource without an | | A PUT that would result in the creation of a resource without an | |
| appropriately scoped parent collection MUST fail with a 409 | | appropriately scoped parent collection MUST fail with a 409 | |
| (Conflict). | | (Conflict). | |
| | | | |
|
| Expires Dec 2002 32 WebDAV (RFC2518) bis June 2002 | | PUT for Collections | |
| | | | |
|
| 8.7.2 PUT for Collections | | Expires Mar 2003 32 | |
| | | | |
|
| As defined in the HTTP/1.1 specification [RFC2068], the "PUT method | | WebDAV (RFC2518) bis September 2002 | |
| 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. | | | |
| | | | |
|
| 8.8 COPY Method | | As defined in [RFC2616], 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. | |
| | | | |
| | | 8.9 COPY Method | |
| | | | |
| The COPY method creates a duplicate of the source resource, | | The COPY method creates a duplicate of the source resource, | |
| identified by the Request-URI, in the destination resource, | | identified by the Request-URI, in the destination resource, | |
| identified by the URI in the Destination header. The Destination | | identified by the URI in the Destination header. The Destination | |
| header MUST be present. The exact behavior of the COPY method | | header MUST be present. The exact behavior of the COPY method | |
| depends on the type of the source resource. | | depends on the type of the source resource. | |
| | | | |
| All WebDAV compliant resources MUST support the COPY method. | | All WebDAV compliant resources MUST support the COPY method. | |
| However, support for the COPY method does not guarantee the ability | | However, support for the COPY method does not guarantee the ability | |
| to copy a resource. For example, separate programs may control | | to copy a resource. For example, separate programs may control | |
| resources on the same server. As a result, it may not be possible | | 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 | | to copy a resource to a location that appears to be on the same | |
| server. | | server. | |
| | | | |
|
| 8.8.1 COPY for HTTP/1.1 resources | | COPY for HTTP/1.1 resources | |
| | | | |
| When the source resource is not a collection the result of the COPY | | 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 | | method is the creation of a new resource at the destination whose | |
| state and behavior match that of the source resource as closely as | | state and behavior match that of the source resource as closely as | |
| possible. After a successful COPY invocation, all properties on the | | possible. After a successful COPY invocation, all properties on the | |
| source resource MUST be duplicated on the destination resource, | | source resource MUST be duplicated on the destination resource, | |
| subject to modifying headers and XML elements, following the | | subject to modifying headers and XML elements, following the | |
| definition for copying properties. Since the environment at the | | definition for copying properties. Since the environment at the | |
| destination may be different than at the source due to factors | | destination may be different than at the source due to factors | |
| outside the scope of control of the server, such as the absence of | | outside the scope of control of the server, such as the absence of | |
| resources required for correct operation, it may not be possible to | | resources required for correct operation, it may not be possible to | |
| completely duplicate the behavior of the resource at the | | completely duplicate the behavior of the resource at the | |
| destination. Subsequent alterations to the destination resource will | | destination. Subsequent alterations to the destination resource will | |
| not modify the source resource. Subsequent alterations to the | | not modify the source resource. Subsequent alterations to the | |
| source resource will not modify the destination resource. | | source resource will not modify the destination resource. | |
| | | | |
|
| 8.8.2 COPY for Properties | | COPY for Properties | |
| | | | |
| Live properties described in this document SHOULD be duplicated as | | Live properties described in this document SHOULD be duplicated as | |
| identically behaving live properties at the destination resource. | | identically behaving live properties at the destination resource. | |
| If a property cannot be copied live, then its value MUST be | | If a property cannot be copied live, then its value MUST be | |
|
| | | | |
| Expires Dec 2002 33 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| duplicated, octet-for-octet, in an identically named, dead property | | duplicated, octet-for-octet, in an identically named, dead property | |
| on the destination resource. | | on the destination resource. | |
| | | | |
|
| 8.8.3 COPY for Collections | | COPY for Collections | |
| | | | |
| The COPY method on a collection without a Depth header MUST act as | | The COPY method on a collection without a Depth header MUST act as | |
| if a Depth header with value "infinity" was included. A client may | | if a Depth header with value "infinity" was included. A client may | |
| submit a Depth header on a COPY on a collection with a value of "0" | | submit a Depth header on a COPY on a collection with a value of "0" | |
|
| | | | |
| | | Expires Mar 2003 33 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| or "infinity". DAV compliant servers MUST support the "0" and | | or "infinity". DAV compliant servers MUST support the "0" and | |
| "infinity" Depth header behaviors. | | "infinity" Depth header behaviors. | |
| | | | |
| A COPY of depth infinity instructs that the collection resource | | A COPY of depth infinity instructs that the collection resource | |
| identified by the Request-URI is to be copied to the location | | identified by the Request-URI is to be copied to the location | |
| identified by the URI in the Destination header, and all its | | identified by the URI in the Destination header, and all its | |
| internal member resources are to be copied to a location relative to | | internal member resources are to be copied to a location relative to | |
| it, recursively through all levels of the collection hierarchy. | | it, recursively through all levels of the collection hierarchy. | |
| | | | |
| A COPY of "Depth: 0" only instructs that the collection and its | | A COPY of "Depth: 0" only instructs that the collection and its | |
| | | | |
| skipping to change at line 1743 | | skipping to change at line 1846 | |
| the server should still attempt to copy other subtrees and their | | the server should still attempt to copy other subtrees and their | |
| members, that are not descendents of an error-causing collection). | | members, that are not descendents of an error-causing collection). | |
| So, for example, if an infinite depth copy operation is performed on | | So, for example, if an infinite depth copy operation is performed on | |
| collection /a/, which contains collections /a/b/ and /a/c/, and an | | collection /a/, which contains collections /a/b/ and /a/c/, and an | |
| error occurs copying /a/b/, an attempt should still be made to copy | | error occurs copying /a/b/, an attempt should still be made to copy | |
| /a/c/. Similarly, after encountering an error copying a non- | | /a/c/. Similarly, after encountering an error copying a non- | |
| collection resource as part of an infinite depth copy, the server | | collection resource as part of an infinite depth copy, the server | |
| SHOULD try to finish as much of the original copy operation as | | SHOULD try to finish as much of the original copy operation as | |
| possible. | | possible. | |
| | | | |
|
| Expires Dec 2002 34 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| If an error in executing the COPY method occurs with a resource | | If an error in executing the COPY method occurs with a resource | |
| other than the resource identified in the Request-URI then the | | other than the resource identified in the Request-URI then the | |
|
| response MUST be a 207 (Multi-Status). | | response MUST be a 207 (Multi-Status), and the errored resourceÆs | |
| | | URL MUST appear with the specific error. | |
| | | | |
| The 424 (Failed Dependency) status code SHOULD NOT be returned in | | The 424 (Failed Dependency) status code SHOULD NOT be returned in | |
| the 207 (Multi-Status) response from a COPY method. These responses | | the 207 (Multi-Status) response from a COPY method. These responses | |
| can be safely omitted because the client will know that the progeny | | can be safely omitted because the client will know that the progeny | |
| of a resource could not be copied when the client receives an error | | of a resource could not be copied when the client receives an error | |
| for the parent. Additionally 201 (Created)/204 (No Content) status | | for the parent. Additionally 201 (Created)/204 (No Content) status | |
| codes SHOULD NOT be returned as values in 207 (Multi-Status) | | codes SHOULD NOT be returned as values in 207 (Multi-Status) | |
|
| | | | |
| | | Expires Mar 2003 34 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| responses from COPY methods. They, too, can be safely omitted | | responses from COPY methods. They, too, can be safely omitted | |
| because they are the default success codes. | | because they are the default success codes. | |
| | | | |
|
| 8.8.4 COPY and the Overwrite Header | | COPY and the Overwrite Header | |
| | | | |
| If a resource exists at the destination and the Overwrite header is | | If a resource exists at the destination and the Overwrite header is | |
| "T" then prior to performing the copy the server MUST perform a | | "T" then prior to performing the copy the server MUST perform a | |
| DELETE with "Depth: infinity" on the destination resource. If the | | DELETE with "Depth: infinity" on the destination resource. If the | |
| Overwrite header is set to "F" then the operation will fail. | | Overwrite header is set to "F" then the operation will fail. | |
| | | | |
|
| 8.8.5 Status Codes | | Status Codes | |
| | | | |
| 201 (Created) - The source resource was successfully copied. The | | 201 (Created) - The source resource was successfully copied. The | |
| copy operation resulted in the creation of a new resource. | | copy operation resulted in the creation of a new resource. | |
| | | | |
| 204 (No Content) - The source resource was successfully copied to a | | 204 (No Content) - The source resource was successfully copied to a | |
| pre-existing destination resource. | | pre-existing destination resource. | |
| | | | |
| 207 (Multi-Status) - Multiple resources were to be affected by the | | 207 (Multi-Status) - Multiple resources were to be affected by the | |
| COPY, but errors on some of them prevented the operation from taking | | COPY, but errors on some of them prevented the operation from taking | |
| place. Specific error messages, together with the most appropriate | | place. Specific error messages, together with the most appropriate | |
| of the source and destination URLs, appear in the body of the multi- | | of the source and destination URLs, appear in the body of the multi- | |
| status response. E.g. if a destination resource was locked and could | | status response. E.g. if a destination resource was locked and could | |
| not be overwritten, then the destination resource URL appears with | | not be overwritten, then the destination resource URL appears with | |
| the 423 (Locked) status. | | the 423 (Locked) status. | |
| | | | |
|
| 403 (Forbidden) û The source and destination URIs are the same. | | 403 (Forbidden) û The operation is forbidden. Possibly this is | |
| | | because the source and destination URIs are the same. | |
| | | | |
| 409 (Conflict) û A resource cannot be created at the destination | | 409 (Conflict) û A resource cannot be created at the destination | |
|
| until one or more intermediate collections have been created. | | until one or more intermediate collections have been created. The | |
| | | server MUST NOT create those intermediate collections automatically. | |
| | | | |
| 412 (Precondition Failed) û A precondition failed, e.g. the | | 412 (Precondition Failed) û A precondition failed, e.g. the | |
| Overwrite header is "F" and the state of the destination resource is | | Overwrite header is "F" and the state of the destination resource is | |
| non-null. | | non-null. | |
| | | | |
| 423 (Locked) - The destination resource was locked. | | 423 (Locked) - The destination resource was locked. | |
| | | | |
| 502 (Bad Gateway) - This may occur when the destination is on | | 502 (Bad Gateway) - This may occur when the destination is on | |
|
| another server and the destination server refuses to accept the | | another server, repository or context. Either the source context | |
| resource. | | does not support copying to the destination context, or the | |
| | | destination context refuses to accept the resource. The client may | |
| Expires Dec 2002 35 WebDAV (RFC2518) bis June 2002 | | wish to try GET/PUT and PROPFIND/PROPPATCH instead. | |
| | | | |
| 507 (Insufficient Storage) - The destination resource does not have | | 507 (Insufficient Storage) - The destination resource does not have | |
| sufficient space to record the state of the resource after the | | sufficient space to record the state of the resource after the | |
| execution of this method. | | execution of this method. | |
| | | | |
|
| 8.8.6 Example - COPY with Overwrite | | Example - COPY with Overwrite | |
| | | | |
| This example shows resource | | This example shows resource | |
| http://www.ics.uci.edu/~fielding/index.html being copied to the | | http://www.ics.uci.edu/~fielding/index.html being copied to the | |
|
| | | | |
| | | Expires Mar 2003 35 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| location http://www.ics.uci.edu/users/f/fielding/index.html. The | | location http://www.ics.uci.edu/users/f/fielding/index.html. The | |
| 204 (No Content) status code indicates the existing resource at the | | 204 (No Content) status code indicates the existing resource at the | |
| destination was overwritten. | | destination was overwritten. | |
| | | | |
| >>Request | | >>Request | |
| | | | |
| COPY /~fielding/index.html HTTP/1.1 | | COPY /~fielding/index.html HTTP/1.1 | |
| Host: www.ics.uci.edu | | Host: www.ics.uci.edu | |
| Destination: http://www.ics.uci.edu/users/f/fielding/index.html | | Destination: http://www.ics.uci.edu/users/f/fielding/index.html | |
| | | | |
| >>Response | | >>Response | |
| | | | |
| HTTP/1.1 204 No Content | | HTTP/1.1 204 No Content | |
| | | | |
|
| 8.8.7 Example - COPY with No Overwrite | | Example - COPY with No Overwrite | |
| | | | |
| The following example shows the same copy operation being performed, | | The following example shows the same copy operation being performed, | |
| but with the Overwrite header set to "F." A response of 412 | | but with the Overwrite header set to "F." A response of 412 | |
| (Precondition Failed) is returned because the destination resource | | (Precondition Failed) is returned because the destination resource | |
| has a non-null state. | | has a non-null state. | |
| | | | |
| >>Request | | >>Request | |
| | | | |
| COPY /~fielding/index.html HTTP/1.1 | | COPY /~fielding/index.html HTTP/1.1 | |
| Host: www.ics.uci.edu | | Host: www.ics.uci.edu | |
| Destination: http://www.ics.uci.edu/users/f/fielding/index.html | | Destination: http://www.ics.uci.edu/users/f/fielding/index.html | |
| Overwrite: F | | Overwrite: F | |
| | | | |
| >>Response | | >>Response | |
| | | | |
| HTTP/1.1 412 Precondition Failed | | HTTP/1.1 412 Precondition Failed | |
| | | | |
|
| 8.8.8 Example - COPY of a Collection | | Example - COPY of a Collection | |
| | | | |
| >>Request | | >>Request | |
| | | | |
| COPY /container/ HTTP/1.1 | | COPY /container/ HTTP/1.1 | |
| Host: www.foo.bar | | Host: www.foo.bar | |
| Destination: http://www.foo.bar/othercontainer/ | | Destination: http://www.foo.bar/othercontainer/ | |
|
| | | | |
| Expires Dec 2002 36 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| Depth: infinity | | Depth: infinity | |
| | | | |
| >>Response | | >>Response | |
| | | | |
| HTTP/1.1 207 Multi-Status | | HTTP/1.1 207 Multi-Status | |
| Content-Type: text/xml; charset="utf-8" | | Content-Type: text/xml; charset="utf-8" | |
| Content-Length: xxxx | | Content-Length: xxxx | |
| | | | |
| <?xml version="1.0" encoding="utf-8" ?> | | <?xml version="1.0" encoding="utf-8" ?> | |
| | | | |
| <d:multistatus xmlns:d="DAV:"> | | <d:multistatus xmlns:d="DAV:"> | |
|
| | | | |
| | | Expires Mar 2003 36 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| <d:response> | | <d:response> | |
| <d:href>http://www.foo.bar/othercontainer/R2/</d:href> | | <d:href>http://www.foo.bar/othercontainer/R2/</d:href> | |
| <d:status>HTTP/1.1 423 Locked</d:status> | | <d:status>HTTP/1.1 423 Locked</d:status> | |
| </d:response> | | </d:response> | |
| </d:multistatus> | | </d:multistatus> | |
| | | | |
| The Depth header is unnecessary as the default behavior of COPY on a | | 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 | | collection is to act as if a "Depth: infinity" header had been | |
| submitted. In this example most of the resources, along with the | | submitted. In this example most of the resources, along with the | |
| collection, were copied successfully. However the collection R2 | | collection, were copied successfully. However the collection R2 | |
| failed because the destination R2 is locked. Because there was an | | failed because the destination R2 is locked. Because there was an | |
| error copying R2, none of R2's members were copied. However no | | error copying R2, none of R2's members were copied. However no | |
| errors were listed for those members due to the error minimization | | errors were listed for those members due to the error minimization | |
|
| rules given in section 8.8.3. | | rules given in section 0. | |
| | | | |
|
| 8.9 MOVE Method | | 8.10 MOVE Method | |
| | | | |
| The MOVE operation on a non-collection resource is the logical | | The MOVE operation on a non-collection resource is the logical | |
| equivalent of a copy (COPY), followed by consistency maintenance | | equivalent of a copy (COPY), followed by consistency maintenance | |
| processing, followed by a delete of the source, where all three | | processing, followed by a delete of the source, where all three | |
| actions are performed atomically. The consistency maintenance step | | actions are performed atomically. The consistency maintenance step | |
| allows the server to perform updates caused by the move, such as | | allows the server to perform updates caused by the move, such as | |
| updating all URIs other than the Request-URI which identify the | | updating all URIs other than the Request-URI which identify the | |
| source resource, to point to the new destination resource. | | source resource, to point to the new destination resource. | |
| Consequently, the Destination header MUST be present on all MOVE | | Consequently, the Destination header MUST be present on all MOVE | |
| methods and MUST follow all COPY requirements for the COPY part of | | methods and MUST follow all COPY requirements for the COPY part of | |
| | | | |
| skipping to change at line 1898 | | skipping to change at line 2014 | |
| | | | |
| For example, separate programs may actually control different sets | | For example, separate programs may actually control different sets | |
| of resources on the same server. Therefore, it may not be possible | | 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 | | to move a resource within a namespace that appears to belong to the | |
| same server. | | same server. | |
| | | | |
| If a resource exists at the destination, the destination resource | | If a resource exists at the destination, the destination resource | |
| will be DELETEd as a side-effect of the MOVE operation, subject to | | will be DELETEd as a side-effect of the MOVE operation, subject to | |
| the restrictions of the Overwrite header. | | the restrictions of the Overwrite header. | |
| | | | |
|
| Expires Dec 2002 37 WebDAV (RFC2518) bis June 2002 | | MOVE for Properties | |
| | | | |
| 8.9.1 MOVE for Properties | | | |
| | | | |
| The behavior of properties on a MOVE MUST be the same as specified | | The behavior of properties on a MOVE MUST be the same as specified | |
|
| in section 8.8.2. | | in section 0. | |
| | | | |
|
| 8.9.2 MOVE for Collections | | MOVE for Collections | |
| | | | |
| A MOVE with "Depth: infinity" instructs that the collection | | A MOVE with "Depth: infinity" instructs that the collection | |
| identified by the Request-URI be moved to the URI specified in the | | identified by the Request-URI be moved to the URI specified in the | |
| Destination header, and all resources identified by its internal | | Destination header, and all resources identified by its internal | |
| member URIs are to be moved to locations relative to it, recursively | | member URIs are to be moved to locations relative to it, recursively | |
| through all levels of the collection hierarchy. | | through all levels of the collection hierarchy. | |
| | | | |
|
| | | Expires Mar 2003 37 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| The MOVE method on a collection MUST act as if a "Depth: infinity" | | The MOVE method on a collection MUST act as if a "Depth: infinity" | |
| header was used on it. A client MUST NOT submit a Depth header on a | | header was used on it. A client MUST NOT submit a Depth header on a | |
| MOVE on a collection with any value but "infinity". | | MOVE on a collection with any value but "infinity". | |
| | | | |
| Any headers included with MOVE MUST be applied in processing every | | Any headers included with MOVE MUST be applied in processing every | |
| resource to be moved with the exception of the Destination header. | | resource to be moved with the exception of the Destination header. | |
| | | | |
| The behavior of the Destination header is the same as given for COPY | | The behavior of the Destination header is the same as given for COPY | |
| on collections. | | on collections. | |
| | | | |
| | | | |
| skipping to change at line 1944 | | skipping to change at line 2062 | |
| So, for example, if an infinite depth move is performed on | | So, for example, if an infinite depth move is performed on | |
| collection /a/, which contains collections /a/b/ and /a/c/, and an | | collection /a/, which contains collections /a/b/ and /a/c/, and an | |
| error occurs moving /a/b/, an attempt should still be made to try | | error occurs moving /a/b/, an attempt should still be made to try | |
| moving /a/c/. Similarly, after encountering an error moving a non- | | moving /a/c/. Similarly, after encountering an error moving a non- | |
| collection resource as part of an infinite depth move, the server | | collection resource as part of an infinite depth move, the server | |
| SHOULD try to finish as much of the original move operation as | | SHOULD try to finish as much of the original move operation as | |
| possible. | | possible. | |
| | | | |
| If an error occurs with a resource other than the resource | | If an error occurs with a resource other than the resource | |
| identified in the Request-URI then the response MUST be a 207 | | identified in the Request-URI then the response MUST be a 207 | |
|
| (Multi-Status). | | (Multi-Status), and the errored resourceÆs URL MUST appear with the | |
| | | specific error. | |
| | | | |
| The 424 (Failed Dependency) status code SHOULD NOT be returned in | | The 424 (Failed Dependency) status code SHOULD NOT be returned in | |
| the 207 (Multi-Status) response from a MOVE method. These errors | | the 207 (Multi-Status) response from a MOVE method. These errors | |
| can be safely omitted because the client will know that the progeny | | can be safely omitted because the client will know that the progeny | |
| of a resource could not be moved when the client receives an error | | of a resource could not be moved when the client receives an error | |
| for the parent. Additionally 201 (Created)/204 (No Content) | | for the parent. Additionally 201 (Created)/204 (No Content) | |
| responses SHOULD NOT be returned as values in 207 (Multi-Status) | | responses SHOULD NOT be returned as values in 207 (Multi-Status) | |
|
| | | | |
| Expires Dec 2002 38 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| responses from a MOVE. These responses can be safely omitted | | responses from a MOVE. These responses can be safely omitted | |
| because they are the default success codes. | | because they are the default success codes. | |
| | | | |
|
| 8.9.3 MOVE and the Overwrite Header | | MOVE and the Overwrite Header | |
| | | | |
| If a resource exists at the destination and the Overwrite header is | | If a resource exists at the destination and the Overwrite header is | |
| "T" then prior to performing the move the server MUST perform a | | "T" then prior to performing the move the server MUST perform a | |
| DELETE with "Depth: infinity" on the destination resource. If the | | DELETE with "Depth: infinity" on the destination resource. If the | |
| Overwrite header is set to "F" then the operation will fail. | | Overwrite header is set to "F" then the operation will fail. | |
| | | | |
|
| 8.9.4 Status Codes | | Status Codes | |
| | | | |
| | | Expires Mar 2003 38 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| 201 (Created) - The source resource was successfully moved, and a | | 201 (Created) - The source resource was successfully moved, and a | |
| new resource was created at the destination. | | new resource was created at the destination. | |
| | | | |
| 204 (No Content) - The source resource was successfully moved to a | | 204 (No Content) - The source resource was successfully moved to a | |
| pre-existing destination resource. | | pre-existing destination resource. | |
| | | | |
| 207 (Multi-Status) - Multiple resources were to be affected by the | | 207 (Multi-Status) - Multiple resources were to be affected by the | |
| MOVE, but errors on some of them prevented the operation from taking | | MOVE, but errors on some of them prevented the operation from taking | |
| place. Specific error messages, together with the most appropriate | | place. Specific error messages, together with the most appropriate | |
| of the source and destination URLs, appear in the body of the multi- | | of the source and destination URLs, appear in the body of the multi- | |
| status response. E.g. if a source resource was locked and could not | | status response. E.g. if a source resource was locked and could not | |
| be moved, then the source resource URL appears with the 423 (Locked) | | be moved, then the source resource URL appears with the 423 (Locked) | |
| status. | | status. | |
| | | | |
| 403 (Forbidden) û The source and destination URIs are the same. | | 403 (Forbidden) û The source and destination URIs are the same. | |
| | | | |
| 409 (Conflict) û A resource cannot be created at the destination | | 409 (Conflict) û A resource cannot be created at the destination | |
|
| until one or more intermediate collections have been created. | | until one or more intermediate collections have been created. The | |
| | | server MUST NOT create those intermediate collections automatically. | |
| | | | |
| 412 (Precondition Failed) û A condition failed, e.g. the Overwrite | | 412 (Precondition Failed) û A condition failed, e.g. the Overwrite | |
| header is "F" and the state of the destination resource is non-null. | | header is "F" and the state of the destination resource is non-null. | |
| | | | |
| 423 (Locked) - The source or the destination resource was locked. | | 423 (Locked) - The source or the destination resource was locked. | |
| | | | |
| 502 (Bad Gateway) - This may occur when the destination is on | | 502 (Bad Gateway) - This may occur when the destination is on | |
| another server and the destination server refuses to accept the | | another server and the destination server refuses to accept the | |
| resource. | | resource. | |
| | | | |
|
| 8.9.5 Example - MOVE of a Non-Collection | | Example - MOVE of a Non-Collection | |
| | | | |
| This example shows resource | | This example shows resource | |
| http://www.ics.uci.edu/~fielding/index.html being moved to the | | http://www.ics.uci.edu/~fielding/index.html being moved to the | |
| location http://www.ics.uci.edu/users/f/fielding/index.html. The | | location http://www.ics.uci.edu/users/f/fielding/index.html. The | |
| contents of the destination resource would have been overwritten if | | contents of the destination resource would have been overwritten if | |
| the destination resource had been non-null. In this case, since | | the destination resource had been non-null. In this case, since | |
| there was nothing at the destination resource, the response code is | | there was nothing at the destination resource, the response code is | |
| 201 (Created). | | 201 (Created). | |
| | | | |
|
| Expires Dec 2002 39 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| >>Request | | >>Request | |
| | | | |
| MOVE /~fielding/index.html HTTP/1.1 | | MOVE /~fielding/index.html HTTP/1.1 | |
| Host: www.ics.uci.edu | | Host: www.ics.uci.edu | |
| Destination: http://www.ics.uci.edu/users/f/fielding/index.html | | Destination: http://www.ics.uci.edu/users/f/fielding/index.html | |
| | | | |
| >>Response | | >>Response | |
| | | | |
| HTTP/1.1 201 Created | | HTTP/1.1 201 Created | |
| Location: http://www.ics.uci.edu/users/f/fielding/index.html | | Location: http://www.ics.uci.edu/users/f/fielding/index.html | |
| | | | |
|
| 8.9.6 Example - MOVE of a Collection | | Expires Mar 2003 39 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| | | Example - MOVE of a Collection | |
| | | | |
| >>Request | | >>Request | |
| | | | |
| MOVE /container/ HTTP/1.1 | | MOVE /container/ HTTP/1.1 | |
| Host: www.foo.bar | | Host: www.foo.bar | |
| Destination: http://www.foo.bar/othercontainer/ | | Destination: http://www.foo.bar/othercontainer/ | |
| Overwrite: F | | Overwrite: F | |
| If: (<opaquelocktoken:fe184f2e-6eec-41d0-c765-01adc56e6bb4>) | | If: (<opaquelocktoken:fe184f2e-6eec-41d0-c765-01adc56e6bb4>) | |
| (<opaquelocktoken:e454f3f3-acdc-452a-56c7-00a5c91e4b77>) | | (<opaquelocktoken:e454f3f3-acdc-452a-56c7-00a5c91e4b77>) | |
| | | | |
| | | | |
| skipping to change at line 2049 | | skipping to change at line 2172 | |
| <d:status>HTTP/1.1 423 Locked</d:status> | | <d:status>HTTP/1.1 423 Locked</d:status> | |
| </d:response> | | </d:response> | |
| </d:multistatus> | | </d:multistatus> | |
| | | | |
| In this example the client has submitted a number of lock tokens | | 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 | | with the request. A lock token will need to be submitted for every | |
| resource, both source and destination, anywhere in the scope of the | | resource, both source and destination, anywhere in the scope of the | |
| method, that is locked. In this case the proper lock token was not | | method, that is locked. In this case the proper lock token was not | |
| submitted for the destination http://www.foo.bar/othercontainer/C2/. | | submitted for the destination http://www.foo.bar/othercontainer/C2/. | |
| This means that the resource /container/C2/ could not be moved. | | This means that the resource /container/C2/ could not be moved. | |
|
| Because there was an error copying /container/C2/, none of | | Because there was an error moving /container/C2/, none of | |
| /container/C2's members were copied. However no errors were listed | | /container/C2's members were moved. However no errors were listed | |
| for those members due to the error minimization rules given in | | for those members due to the error minimization rules given in | |
|
| section 8.8.3. User agent authentication has previously occurred | | section 0. User agent authentication has previously occurred via a | |
| | | mechanism outside the scope of the HTTP protocol, in an underlying | |
| Expires Dec 2002 40 WebDAV (RFC2518) bis June 2002 | | transport layer. | |
| | | | |
| via a mechanism outside the scope of the HTTP protocol, in an | | | |
| underlying transport layer. | | | |
| | | | |
|
| 8.10 LOCK Method | | 8.11 LOCK Method | |
| | | | |
| The following sections describe the LOCK method, which is used to | | The following sections describe the LOCK method, which is used to | |
|
| take out a lock of any access type. These sections on the LOCK | | take out a lock of any access type and to refresh an existing lock. | |
| method describe only those semantics that are specific to the LOCK | | These sections on the LOCK method describe only those semantics that | |
| method and are independent of the access type of the lock being | | are specific to the LOCK method and are independent of the access | |
| requested. | | type of the lock being requested. | |
| | | | |
| Any resource which supports the LOCK method MUST, at minimum, | | Any resource which supports the LOCK method MUST, at minimum, | |
| support the XML request and response formats defined herein. | | support the XML request and response formats defined herein. | |
| | | | |
|
| 8.10.1 Operation | | Expires Mar 2003 40 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| | | Operation | |
| | | | |
| A LOCK method invocation creates the lock specified by the lockinfo | | A LOCK method invocation creates the lock specified by the lockinfo | |
|
| XML element on the Request-URI. Lock method requests SHOULD have a | | XML element on the resource indicated by the Request-URI, which | |
| XML request body which contains an owner XML element for this lock | | becomes the root of the lock. Lock method requests to create a new | |
| request, unless this is a refresh request. The server MUST preserve | | lock MUST have a XML request body which contains an owner XML | |
| the information provided by the client in the owner field when the | | element for this lock request. The server MUST preserve the | |
| lock information is requested. The LOCK request may have a Timeout | | information provided by the client in the owner field when the lock | |
| | | information is requested. The LOCK request may have a Timeout | |
| header. | | header. | |
| | | | |
| Clients MUST assume that locks may arbitrarily disappear at any | | Clients MUST assume that locks may arbitrarily disappear at any | |
| time, regardless of the value given in the Timeout header. The | | time, regardless of the value given in the Timeout header. The | |
| Timeout header only indicates the behavior of the server if | | Timeout header only indicates the behavior of the server if | |
| "extraordinary" circumstances do not occur. For example, a | | "extraordinary" circumstances do not occur. For example, a | |
| sufficiently privileged user may remove a lock at any time or the | | sufficiently privileged user may remove a lock at any time or the | |
| system may crash in such a way that it loses the record of the | | system may crash in such a way that it loses the record of the | |
| lock's existence. The response MUST contain the value of the | | lock's existence. The response MUST contain the value of the | |
| lockdiscovery property in a prop XML element. | | lockdiscovery property in a prop XML element. | |
| | | | |
| In order to indicate the lock token associated with a newly created | | In order to indicate the lock token associated with a newly created | |
| lock, a Lock-Token response header MUST be included in the response | | lock, a Lock-Token response header MUST be included in the response | |
| for every successful LOCK request for a new lock. Note that the | | for every successful LOCK request for a new lock. Note that the | |
| Lock-Token header would not be returned in the response for a | | Lock-Token header would not be returned in the response for a | |
| successful refresh LOCK request because a new lock was not created. | | successful refresh LOCK request because a new lock was not created. | |
| | | | |
|
| 8.10.2 The Effect of Locks on Properties and Collections | | Refreshing Locks | |
| | | | |
| | | A locks is refreshed by sending a new LOCK request to the resource | |
| | | which is the root of the lock. A LOCK request to refresh a lock must | |
| | | specify which lock to refresh by using the Lock-Token header with a | |
| | | single lock token (only one lock may be refreshed at a time). This | |
| | | request does not contain a body, but it may contain a Timeout | |
| | | header. A server MAY accept the Timeout header to change the | |
| | | duration remaining on the lock to the new value. | |
| | | | |
| | | If the resource has other (shared) locks, those locks are unaffected | |
| | | by a lock refresh. Additionally, those locks do not prevent the | |
| | | named lock from being refreshed. | |
| | | | |
| | | Note that in RFC2518, clients were indicated through the example in | |
| | | the text to use the If header to specify what lock to refresh | |
| | | (rather than the Lock-Token header). Servers are encouraged to | |
| | | continue to support this as well as the Lock-Token header. | |
| | | | |
| | | The Effect of Locks on Properties and Collections | |
| | | | |
| The scope of a lock is the entire state of the resource, including | | 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 | | its body and associated properties. As a result, a lock on a | |
| resource MUST also lock the resource's properties. | | resource MUST also lock the resource's properties. | |
| | | | |
|
| | | Expires Mar 2003 41 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| For collections, a lock also affects the ability to add or remove | | For collections, a lock also affects the ability to add or remove | |
| members. The nature of the effect depends upon the type of access | | members. The nature of the effect depends upon the type of access | |
|
| control involved. | | control involved. This means that if a collection is locked, its | |
| | | lock-token is required in all these cases: | |
| Expires Dec 2002 41 WebDAV (RFC2518) bis June 2002 | | - DELETE a collectionÆs direct internal member | |
| | | - MOVE a member out of the collection | |
| | | - MOVE a member into the collection, unless it overwrites a pre- | |
| | | existing member | |
| | | - MOVE to rename it within a collection, | |
| | | - COPY a member into a collection, unless it overwrites a pre- | |
| | | existing member | |
| | | - PUT or MKCOL request which would create a new member. | |
| | | The collectionÆs lock token is required in addition to the lock | |
| | | token on the internal member itself, if it exists. | |
| | | | |
|
| 8.10.3 Locking Replicated Resources | | Locking Replicated Resources | |
| | | | |
| A resource may be made available through more than one URI. However | | A resource may be made available through more than one URI. However | |
| locks apply to resources, not URIs. Therefore a LOCK request on a | | locks apply to resources, not URIs. Therefore a LOCK request on a | |
| resource MUST NOT succeed if can not be honored by all the URIs | | resource MUST NOT succeed if can not be honored by all the URIs | |
| through which the resource is addressable. | | through which the resource is addressable. | |
| | | | |
|
| 8.10.4 Depth and Locking | | Depth and Locking | |
| | | | |
| The Depth header may be used with the LOCK method. Values other | | The Depth header may be used with the LOCK method. Values other | |
| than 0 or infinity MUST NOT be used with the Depth header on a LOCK | | than 0 or infinity MUST NOT be used with the Depth header on a LOCK | |
| method. All resources that support the LOCK method MUST support the | | method. All resources that support the LOCK method MUST support the | |
| Depth header. | | Depth header. | |
| | | | |
| A Depth header of value 0 means to just lock the resource specified | | A Depth header of value 0 means to just lock the resource specified | |
| by the Request-URI. | | by the Request-URI. | |
| | | | |
| If the Depth header is set to infinity then the resource specified | | If the Depth header is set to infinity then the resource specified | |
| | | | |
| skipping to change at line 2139 | | skipping to change at line 2296 | |
| token, all associated resources are unlocked. If the lock cannot be | | token, all associated resources are unlocked. If the lock cannot be | |
| granted to all resources, a 409 (Conflict) status code MUST be | | granted to all resources, a 409 (Conflict) status code MUST be | |
| returned with a response entity body containing a multistatus XML | | returned with a response entity body containing a multistatus XML | |
| element describing which resource(s) prevented the lock from being | | element describing which resource(s) prevented the lock from being | |
| granted. Hence, partial success is not an option. Either the | | granted. Hence, partial success is not an option. Either the | |
| entire hierarchy is locked or no resources are locked. | | entire hierarchy is locked or no resources are locked. | |
| | | | |
| If no Depth header is submitted on a LOCK request then the request | | If no Depth header is submitted on a LOCK request then the request | |
| MUST act as if a "Depth:infinity" had been submitted. | | MUST act as if a "Depth:infinity" had been submitted. | |
| | | | |
|
| 8.10.5 Interaction with other Methods | | Interaction with other Methods | |
| | | | |
| The interaction of a LOCK with various methods is dependent upon the | | The interaction of a LOCK with various methods is dependent upon the | |
| lock type. However, independent of lock type, a successful DELETE | | lock type. However, independent of lock type, a successful DELETE | |
| of a resource MUST cause all of its locks to be removed. | | of a resource MUST cause all of its locks to be removed. | |
| | | | |
|
| 8.10.6 Lock Compatibility Table | | Expires Mar 2003 42 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| | | Locking Unmapped URLs | |
| | | | |
| | | A successful LOCK method MUST result in the creation of an empty | |
| | | resource which is locked (and which is not a collection), when a | |
| | | resource did not previously exist at that URL. Later on, the lock | |
| | | may go away but the empty resource remains. Empty resources MUST | |
| | | then appear in PROPFIND responses including that URL in the response | |
| | | scope. A server MUST respond successfully to a GET request to an | |
| | | empty resource, either by using a 204 No Content response, or by | |
| | | using 200 OK with a Content-Length header indicating zero length and | |
| | | an server-determined Content-Type. | |
| | | | |
| | | Lock Compatibility Table | |
| | | | |
| The table below describes the behavior that occurs when a lock | | The table below describes the behavior that occurs when a lock | |
| request is made on a resource. | | request is made on a resource. | |
| | | | |
|
| CURRENT LOCK STATE/ SHARED EXCLUSIVE | | Current State Shared Lock Request Exclusive Lock Request | |
| LOCK REQUEST LOCK LOCK | | -------------------------------------------------------------------- | |
| None True True | | None True True | |
| Shared Lock True False | | Shared Lock True False | |
| Exclusive Lock False False* | | Exclusive Lock False False* | |
| | | | |
|
| Expires Dec 2002 42 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| Legend: True = lock may be granted. False = lock MUST NOT be | | Legend: True = lock may be granted. False = lock MUST NOT be | |
| granted. *=It is illegal for a principal to request the same lock | | granted. *=It is illegal for a principal to request the same lock | |
| twice. | | twice. | |
| | | | |
| The current lock state of a resource is given in the leftmost | | The current lock state of a resource is given in the leftmost | |
| column, and lock requests are listed in the first row. The | | column, and lock requests are listed in the first row. The | |
| intersection of a row and column gives the result of a lock request. | | 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 | | For example, if a shared lock is held on a resource, and an | |
| exclusive lock is requested, the table entry is "false", indicating | | exclusive lock is requested, the table entry is "false", indicating | |
| the lock must not be granted. | | the lock must not be granted. | |
| | | | |
|
| 8.10.7 Status Codes | | Status Codes | |
| | | | |
| 200 (OK) - The lock request succeeded and the value of the | | 200 (OK) - The lock request succeeded and the value of the | |
| lockdiscovery property is included in the body. | | lockdiscovery property is included in the body. | |
| | | | |
| 409 (Conflict) û A resource cannot be created at the destination | | 409 (Conflict) û A resource cannot be created at the destination | |
|
| until one or more intermediate collections have been created. | | until one or more intermediate collections have been created. The | |
| | | server MUST NOT create those intermediate collections automatically. | |
| | | | |
| 412 (Precondition Failed) - The included lock token was not | | 412 (Precondition Failed) - The included lock token was not | |
| enforceable on this resource or the server could not satisfy the | | enforceable on this resource or the server could not satisfy the | |
| request in the lockinfo XML element. | | request in the lockinfo XML element. | |
| | | | |
| 423 (Locked) - The resource is locked, so the method has been | | 423 (Locked) - The resource is locked, so the method has been | |
| rejected. | | rejected. | |
|
| 8.10.8 Example - Simple Lock Request | | | |
| | | 8.11.1 Example - Simple Lock Request | |
| | | | |
| | | Expires Mar 2003 43 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| >>Request | | >>Request | |
| | | | |
| LOCK /workspace/webdav/proposal.doc HTTP/1.1 | | LOCK /workspace/webdav/proposal.doc HTTP/1.1 | |
| Host: webdav.sb.aol.com | | Host: webdav.sb.aol.com | |
| Timeout: Infinite, Second-4100000000 | | Timeout: Infinite, Second-4100000000 | |
| Content-Type: text/xml; charset="utf-8" | | Content-Type: text/xml; charset="utf-8" | |
| Content-Length: xxxx | | Content-Length: xxxx | |
| Authorization: Digest username="ejw", | | Authorization: Digest username="ejw", | |
| realm="ejw@webdav.sb.aol.com", nonce="...", | | realm="ejw@webdav.sb.aol.com", nonce="...", | |
| | | | |
| skipping to change at line 2206 | | skipping to change at line 2383 | |
| | | | |
| <?xml version="1.0" encoding="utf-8" ?> | | <?xml version="1.0" encoding="utf-8" ?> | |
| <D:lockinfo xmlns:D='DAV:'> | | <D:lockinfo xmlns:D='DAV:'> | |
| <D:lockscope><D:exclusive/></D:lockscope> | | <D:lockscope><D:exclusive/></D:lockscope> | |
| <D:locktype><D:write/></D:locktype> | | <D:locktype><D:write/></D:locktype> | |
| <D:owner> | | <D:owner> | |
| <D:href>http://www.ics.uci.edu/~ejw/contact.html</D:href> | | <D:href>http://www.ics.uci.edu/~ejw/contact.html</D:href> | |
| </D:owner> | | </D:owner> | |
| </D:lockinfo> | | </D:lockinfo> | |
| | | | |
|
| Expires Dec 2002 43 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| >>Response | | >>Response | |
| | | | |
| HTTP/1.1 200 OK | | HTTP/1.1 200 OK | |
| Lock-Token: <opaquelocktoken:e71d4fae-5dec-22d6-fea5-00a0c91e6be4> | | Lock-Token: <opaquelocktoken:e71d4fae-5dec-22d6-fea5-00a0c91e6be4> | |
| Content-Type: text/xml; charset="utf-8" | | Content-Type: text/xml; charset="utf-8" | |
| Content-Length: xxxx | | Content-Length: xxxx | |
| | | | |
| <?xml version="1.0" encoding="utf-8" ?> | | <?xml version="1.0" encoding="utf-8" ?> | |
| <D:prop xmlns:D="DAV:"> | | <D:prop xmlns:D="DAV:"> | |
| <D:lockdiscovery> | | <D:lockdiscovery> | |
| | | | |
| skipping to change at line 2232 | | skipping to change at line 2407 | |
| <D:owner> | | <D:owner> | |
| <D:href> | | <D:href> | |
| http://www.ics.uci.edu/~ejw/contact.html | | http://www.ics.uci.edu/~ejw/contact.html | |
| </D:href> | | </D:href> | |
| </D:owner> | | </D:owner> | |
| <D:timeout>Second-604800</D:timeout> | | <D:timeout>Second-604800</D:timeout> | |
| <D:locktoken> | | <D:locktoken> | |
| <D:href>opaquelocktoken:e71d4fae-5dec-22d6-fea5- | | <D:href>opaquelocktoken:e71d4fae-5dec-22d6-fea5- | |
| 00a0c91e6be4</D:href> | | 00a0c91e6be4</D:href> | |
| </D:locktoken> | | </D:locktoken> | |
|
| | | <D:lockroot> | |
| | | <D:href>http://webdav.sb.aol.com/workspace/webdav | |
| | | /proposal.doc</D:href> | |
| | | | |
| | | Expires Mar 2003 44 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| | | </D:lockroot> | |
| </D:activelock> | | </D:activelock> | |
| </D:lockdiscovery> | | </D:lockdiscovery> | |
| </D:prop> | | </D:prop> | |
| | | | |
| This example shows the successful creation of an exclusive write | | This example shows the successful creation of an exclusive write | |
| lock on resource | | lock on resource | |
| http://webdav.sb.aol.com/workspace/webdav/proposal.doc. The | | http://webdav.sb.aol.com/workspace/webdav/proposal.doc. The | |
| resource http://www.ics.uci.edu/~ejw/contact.html contains contact | | resource http://www.ics.uci.edu/~ejw/contact.html contains contact | |
| information for the owner of the lock. The server has an activity- | | information for the owner of the lock. The server has an activity- | |
| based timeout policy in place on this resource, which causes the | | based timeout policy in place on this resource, which causes the | |
| lock to automatically be removed after 1 week (604800 seconds). | | lock to automatically be removed after 1 week (604800 seconds). | |
| Note that the nonce, response, and opaque fields have not been | | Note that the nonce, response, and opaque fields have not been | |
| calculated in the Authorization request header. | | calculated in the Authorization request header. | |
| | | | |
|
| Note that the locktoken href element would not contain any | | Note that the locktoken and lockroot href elements would not contain | |
| whitespace. The line return appearing in this document is only for | | any whitespace. The line return appearing in this document is only | |
| formatting. | | for formatting. | |
| | | | |
|
| 8.10.9 Example - Refreshing a Write Lock | | 8.11.2 Example - Refreshing a Write Lock | |
| | | | |
| >>Request | | >>Request | |
| | | | |
| LOCK /workspace/webdav/proposal.doc HTTP/1.1 | | LOCK /workspace/webdav/proposal.doc HTTP/1.1 | |
|
| | | | |
| Expires Dec 2002 44 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| Host: webdav.sb.aol.com | | Host: webdav.sb.aol.com | |
| Timeout: Infinite, Second-4100000000 | | Timeout: Infinite, Second-4100000000 | |
|
| If: (<opaquelocktoken:e71d4fae-5dec-22d6-fea5-00a0c91e6be4>) | | Lock-Token: (<opaquelocktoken:e71d4fae-5dec-22d6-fea5- | |
| | | 00a0c91e6be4>) | |
| Authorization: Digest username="ejw", | | Authorization: Digest username="ejw", | |
| realm="ejw@webdav.sb.aol.com", nonce="...", | | realm="ejw@webdav.sb.aol.com", nonce="...", | |
| uri="/workspace/webdav/proposal.doc", | | uri="/workspace/webdav/proposal.doc", | |
| response="...", opaque="..." | | response="...", opaque="..." | |
| | | | |
| >>Response | | >>Response | |
| | | | |
| HTTP/1.1 200 OK | | HTTP/1.1 200 OK | |
| Content-Type: text/xml; charset="utf-8" | | Content-Type: text/xml; charset="utf-8" | |
| Content-Length: xxxx | | Content-Length: xxxx | |
| | | | |
| skipping to change at line 2283 | | skipping to change at line 2465 | |
| <D:prop xmlns:D="DAV:"> | | <D:prop xmlns:D="DAV:"> | |
| <D:lockdiscovery> | | <D:lockdiscovery> | |
| <D:activelock> | | <D:activelock> | |
| <D:locktype><D:write/></D:locktype> | | <D:locktype><D:write/></D:locktype> | |
| <D:lockscope><D:exclusive/></D:lockscope> | | <D:lockscope><D:exclusive/></D:lockscope> | |
| <D:depth>infinity</D:depth> | | <D:depth>infinity</D:depth> | |
| <D:owner> | | <D:owner> | |
| <D:href> | | <D:href> | |
| http://www.ics.uci.edu/~ejw/contact.html | | http://www.ics.uci.edu/~ejw/contact.html | |
| </D:href> | | </D:href> | |
|
| | | | |
| | | Expires Mar 2003 45 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| </D:owner> | | </D:owner> | |
| <D:timeout>Second-604800</D:timeout> | | <D:timeout>Second-604800</D:timeout> | |
| <D:locktoken> | | <D:locktoken> | |
| <D:href>opaquelocktoken:e71d4fae-5dec-22d6-fea5- | | <D:href>opaquelocktoken:e71d4fae-5dec-22d6-fea5- | |
| 00a0c91e6be4</D:href> | | 00a0c91e6be4</D:href> | |
| </D:locktoken> | | </D:locktoken> | |
|
| | | <D:lockroot> | |
| | | <D:href>http://webdav.sb.aol.com/workspace/webdav | |
| | | /proposal.doc</D:href> | |
| | | </D:lockroot> | |
| </D:activelock> | | </D:activelock> | |
| </D:lockdiscovery> | | </D:lockdiscovery> | |
| </D:prop> | | </D:prop> | |
| | | | |
|
| This request would refresh the lock, resetting any time outs. | | This request would refresh the lock, attempting to reset the timeout | |
| Notice that the client asked for an infinite time out but the server | | to the new value specified in the timeout header. Notice that the | |
| choose to ignore the request. In this example, the nonce, response, | | client asked for an infinite time out but the server choose to | |
| and opaque fields have not been calculated in the Authorization | | ignore the request. In this example, the nonce, response, and opaque | |
| request header. | | fields have not been calculated in the Authorization request header. | |
| | | | |
|
| 8.10.10 Example - Multi-Resource Lock Request | | 8.11.3 Example - Multi-Resource Lock Request | |
| | | | |
| >>Request | | >>Request | |
| | | | |
| LOCK /webdav/ HTTP/1.1 | | LOCK /webdav/ HTTP/1.1 | |
| Host: webdav.sb.aol.com | | Host: webdav.sb.aol.com | |
| Timeout: Infinite, Second-4100000000 | | Timeout: Infinite, Second-4100000000 | |
|
| | | | |
| Expires Dec 2002 45 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| Depth: infinity | | Depth: infinity | |
| Content-Type: text/xml; charset="utf-8" | | Content-Type: text/xml; charset="utf-8" | |
| Content-Length: xxxx | | Content-Length: xxxx | |
| Authorization: Digest username="ejw", | | Authorization: Digest username="ejw", | |
| realm="ejw@webdav.sb.aol.com", nonce="...", | | realm="ejw@webdav.sb.aol.com", nonce="...", | |
| uri="/workspace/webdav/proposal.doc", | | uri="/workspace/webdav/proposal.doc", | |
| response="...", opaque="..." | | response="...", opaque="..." | |
| | | | |
| <?xml version="1.0" encoding="utf-8" ?> | | <?xml version="1.0" encoding="utf-8" ?> | |
| <D:lockinfo xmlns:D="DAV:"> | | <D:lockinfo xmlns:D="DAV:"> | |
| | | | |
| skipping to change at line 2332 | | skipping to change at line 2520 | |
| <D:href>http://www.ics.uci.edu/~ejw/contact.html</D:href> | | <D:href>http://www.ics.uci.edu/~ejw/contact.html</D:href> | |
| </D:owner> | | </D:owner> | |
| </D:lockinfo> | | </D:lockinfo> | |
| | | | |
| >>Response | | >>Response | |
| | | | |
| HTTP/1.1 207 Multi-Status | | HTTP/1.1 207 Multi-Status | |
| Content-Type: text/xml; charset="utf-8" | | Content-Type: text/xml; charset="utf-8" | |
| Content-Length: xxxx | | Content-Length: xxxx | |
| | | | |
|
| | | Expires Mar 2003 46 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| <?xml version="1.0" encoding="utf-8" ?> | | <?xml version="1.0" encoding="utf-8" ?> | |
| <D:multistatus xmlns:D="DAV:"> | | <D:multistatus xmlns:D="DAV:"> | |
| <D:response> | | <D:response> | |
| <D:href>http://webdav.sb.aol.com/webdav/secret</D:href> | | <D:href>http://webdav.sb.aol.com/webdav/secret</D:href> | |
| <D:status>HTTP/1.1 403 Forbidden</D:status> | | <D:status>HTTP/1.1 403 Forbidden</D:status> | |
| </D:response> | | </D:response> | |
| <D:response> | | <D:response> | |
| <D:href>http://webdav.sb.aol.com/webdav/</D:href> | | <D:href>http://webdav.sb.aol.com/webdav/</D:href> | |
| <D:propstat> | | <D:propstat> | |
| <D:prop><D:lockdiscovery/></D:prop> | | <D:prop><D:lockdiscovery/></D:prop> | |
| | | | |
| skipping to change at line 2358 | | skipping to change at line 2550 | |
| collection and all its children. In this request, the client has | | collection and all its children. In this request, the client has | |
| specified that it desires an infinite length lock, if available, | | specified that it desires an infinite length lock, if available, | |
| otherwise a timeout of 4.1 billion seconds, if available. The | | otherwise a timeout of 4.1 billion seconds, if available. The | |
| request entity body contains the contact information for the | | request entity body contains the contact information for the | |
| principal taking out the lock, in this case a web page URL. | | principal taking out the lock, in this case a web page URL. | |
| | | | |
| The error is a 403 (Forbidden) response on the resource | | The error is a 403 (Forbidden) response on the resource | |
| http://webdav.sb.aol.com/webdav/secret. Because this resource could | | http://webdav.sb.aol.com/webdav/secret. Because this resource could | |
| not be locked, none of the resources were locked. Note also that | | not be locked, none of the resources were locked. Note also that | |
| the lockdiscovery property for the Request-URI has been included as | | the lockdiscovery property for the Request-URI has been included as | |
|
| | | | |
| Expires Dec 2002 46 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| required. In this example the lockdiscovery property is empty which | | required. In this example the lockdiscovery property is empty which | |
| means that there are no outstanding locks on the resource. | | means that there are no outstanding locks on the resource. | |
| | | | |
| In this example, the nonce, response, and opaque fields have not | | In this example, the nonce, response, and opaque fields have not | |
| been calculated in the Authorization request header. | | been calculated in the Authorization request header. | |
| | | | |
|
| 8.11 UNLOCK Method | | 8.12 UNLOCK Method | |
| | | | |
| The UNLOCK method removes the lock identified by the lock token in | | The UNLOCK method removes the lock identified by the lock token in | |
|
| the Lock-Token request header from the Request-URI, and all other | | the Lock-Token request header from the Request-URI and all other | |
| resources included in the lock. If all resources which have been | | resources included in the lock. Any locked resource may be | |
| locked under the submitted lock token can not be unlocked then the | | addressed by UNLOCK, not just the resource that the LOCK method | |
| UNLOCK request MUST fail. | | applied to. If all resources which have been locked under the | |
| | | submitted lock token can not be unlocked then the UNLOCK request | |
| | | MUST fail. | |
| | | | |
| | | A successful response to an UNLOCK method does not mean that the | |
| | | resource is unlocked. At most, it means that the specified token no | |
| | | longer identifies a lock on the resource. | |
| | | | |
| Any DAV compliant resource which supports the LOCK method MUST | | Any DAV compliant resource which supports the LOCK method MUST | |
| support the UNLOCK method. | | support the UNLOCK method. | |
| | | | |
|
| 8.11.1 Example - UNLOCK | | Status Codes | |
| | | | |
| | | Expires Mar 2003 47 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| | | 204 (No Content) û Normal success response | |
| | | | |
| | | 400 (Bad Request) û No lock token was provided. | |
| | | | |
| | | 412 (Precondition Failed) - The resource was not locked. | |
| | | | |
| | | 8.12.1 Example - UNLOCK | |
| | | | |
| >>Request | | >>Request | |
| | | | |
| UNLOCK /workspace/webdav/info.doc HTTP/1.1 | | UNLOCK /workspace/webdav/info.doc HTTP/1.1 | |
| Host: webdav.sb.aol.com | | Host: webdav.sb.aol.com | |
| Lock-Token: <opaquelocktoken:a515cfa4-5da4-22e1-f5b5-00a0451e6bf7> | | Lock-Token: <opaquelocktoken:a515cfa4-5da4-22e1-f5b5-00a0451e6bf7> | |
| Authorization: Digest username="ejw", | | Authorization: Digest username="ejw", | |
| realm="ejw@webdav.sb.aol.com", nonce="...", | | realm="ejw@webdav.sb.aol.com", nonce="...", | |
| uri="/workspace/webdav/proposal.doc", | | uri="/workspace/webdav/proposal.doc", | |
| response="...", opaque="..." | | response="...", opaque="..." | |
| | | | |
| skipping to change at line 2407 | | skipping to change at line 2614 | |
| http://webdav.sb.aol.com/workspace/webdav/info.doc. If this lock | | http://webdav.sb.aol.com/workspace/webdav/info.doc. If this lock | |
| included more than just one resource, the lock is removed from all | | included more than just one resource, the lock is removed from all | |
| resources included in the lock. The 204 (No Content) status code is | | resources included in the lock. The 204 (No Content) status code is | |
| used instead of 200 (OK) because there is no response entity body. | | used instead of 200 (OK) because there is no response entity body. | |
| | | | |
| In this example, the nonce, response, and opaque fields have not | | In this example, the nonce, response, and opaque fields have not | |
| been calculated in the Authorization request header. | | been calculated in the Authorization request header. | |
| | | | |
| 9 HTTP Headers for Distributed Authoring | | 9 HTTP Headers for Distributed Authoring | |
| | | | |
|
| Expires Dec 2002 47 WebDAV (RFC2518) bis June 2002 | | All DAV headers follow the same basic formatting rules as HTTP | |
| | | headers. This includes rules like line continuation and how to | |
| | | combine (or separate) multiple instances of the same header using | |
| | | commas. | |
| | | | |
| 9.1 DAV Header | | 9.1 DAV Header | |
| | | | |
|
| DAV = "DAV" ":" "1" ["," "2"] ["," 1#extend] | | DAV = "DAV" ":" #( compliance-code ) | |
| | | compliance-code = ( ô1ö | ô2ö | ôbisö | extend ) | |
| | | extend = Coded-URL | token | |
| | | | |
| | | Expires Mar 2003 48 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| This header indicates that the resource supports the DAV schema and | | This header indicates that the resource supports the DAV schema and | |
| protocol as specified. All DAV compliant resources MUST return the | | protocol as specified. All DAV compliant resources MUST return the | |
| DAV header on all OPTIONS responses. | | DAV header on all OPTIONS responses. | |
| | | | |
|
| The value is a list of all compliance classes that the resource | | The value is a comma-separated list of all compliance class | |
| supports. Note that above a comma has already been added to the 2. | | identifiers that the resource supports. Class identifiers may be | |
| This is because a resource can not be level 2 compliant unless it is | | Coded-URLs or tokens (as defined by [RFC2616]). Identifiers can | |
| also level 1 compliant. Please refer to section Error! Reference | | appear in any order. | |
| source not found. for more details. In general, however, support for | | | |
| one compliance class does not entail support for any other. | | A resource must show class 1 compliance if it shows class 2 or ôbisö | |
| | | compliance. In general, support for one compliance class does not | |
| | | entail support for any other. Please refer to section 16 for more | |
| | | details on compliance classes defined in this specification. | |
| | | | |
| 9.2 Depth Header | | 9.2 Depth Header | |
| | | | |
| Depth = "Depth" ":" ("0" | "1" | "infinity") | | Depth = "Depth" ":" ("0" | "1" | "infinity") | |
| | | | |
| The Depth header is used with methods executed on resources which | | The Depth header is used with methods executed on resources which | |
| could potentially have internal members to indicate whether the | | could potentially have internal members to indicate whether the | |
| method is to be applied only to the resource ("Depth: 0"), to the | | method is to be applied only to the resource ("Depth: 0"), to the | |
| resource and its immediate children, ("Depth: 1"), or the resource | | resource and its immediate children, ("Depth: 1"), or the resource | |
| and all its progeny ("Depth: infinity"). | | and all its progeny ("Depth: infinity"). | |
| | | | |
| skipping to change at line 2459 | | skipping to change at line 2678 | |
| hierarchies in any particular order or on the execution being atomic | | hierarchies in any particular order or on the execution being atomic | |
| unless the particular method explicitly provides such guarantees. | | unless the particular method explicitly provides such guarantees. | |
| | | | |
| Upon execution, a method with a Depth header will perform as much of | | Upon execution, a method with a Depth header will perform as much of | |
| its assigned task as possible and then return a response specifying | | its assigned task as possible and then return a response specifying | |
| what it was able to accomplish and what it failed to do. | | what it was able to accomplish and what it failed to do. | |
| | | | |
| So, for example, an attempt to COPY a hierarchy may result in some | | So, for example, an attempt to COPY a hierarchy may result in some | |
| of the members being copied and some not. | | of the members being copied and some not. | |
| | | | |
|
| Expires Dec 2002 48 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| Any headers on a method that has a defined interaction with the | | Any headers on a method that has a defined interaction with the | |
| Depth header MUST be applied to all resources in the scope of the | | Depth header MUST be applied to all resources in the scope of the | |
| method except where alternative behavior is explicitly defined. For | | method except where alternative behavior is explicitly defined. For | |
| example, an If-Match header will have its value applied against | | example, an If-Match header will have its value applied against | |
|
| | | | |
| | | Expires Mar 2003 49 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| every resource in the method's scope and will cause the method to | | every resource in the method's scope and will cause the method to | |
| fail if the header fails to match. | | fail if the header fails to match. | |
| | | | |
| If a resource, source or destination, within the scope of the method | | 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 | | 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 | | successful execution of the method, then the lock token for that | |
| resource MUST be submitted with the request in the If request | | resource MUST be submitted with the request in the If request | |
| header. | | header. | |
| | | | |
| The Depth header only specifies the behavior of the method with | | The Depth header only specifies the behavior of the method with | |
| | | | |
| skipping to change at line 2487 | | skipping to change at line 2709 | |
| | | | |
| Please note, however, that it is always an error to submit a value | | 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. | | 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 | | 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 | | not have internal members, will result in a 400 (Bad Request). The | |
| method should fail not because the resource doesn't have internal | | method should fail not because the resource doesn't have internal | |
| members, but because of the illegal value in the header. | | members, but because of the illegal value in the header. | |
| | | | |
| 9.3 Destination Header | | 9.3 Destination Header | |
| | | | |
|
| Destination = "Destination" ":" absoluteURI | | Destination = "Destination" ":" ( absoluteURI | abs_path ) | |
| | | | |
| The Destination header specifies the URI which identifies a | | The Destination header specifies the URI which identifies a | |
| destination resource for methods such as COPY and MOVE, which take | | destination resource for methods such as COPY and MOVE, which take | |
|
| two URIs as parameters. Note that the absoluteURI production is | | two URIs as parameters. Note that the absoluteURI and abs_path | |
| defined in [RFC2396]. | | production are defined in [RFC2396]. If abs_path is used, the | |
| | | scheme, host and port of the destination are the same as those for | |
| | | the Request-URI (note the Host header, which must be present on | |
| | | requests, contains the host and port). | |
| | | | |
|
| 9.4 If Header | | If the Destination value is an absolute URI, it may name a different | |
| | | server (or different port or scheme). If the source server cannot | |
| | | attempt a copy to the remote server, it MUST fail the request with a | |
| | | 502 (Bad Gateway) response. | |
| | | | |
| | | 9.4 Force-Authentication Header | |
| | | | |
| | | Force-Authentication = "Force-Authentication" ":" ("T" | "F") | |
| | | | |
| | | The Force-Authentication header is used with the OPTIONS method to | |
| | | specify that the client wants to be challenged for authentication | |
| | | credentials to the resource identified by the Request-URI. A value | |
| | | of "T" indicates that a compliant DAV server MUST respond with | |
| | | either 401 (Unauthorized) or 501 (Not Implemented) status code. | |
| | | | |
| | | 9.5 If Header | |
| | | | |
| If = "If" ":" ( 1*No-tag-list | 1*Tagged-list) | | If = "If" ":" ( 1*No-tag-list | 1*Tagged-list) | |
| No-tag-list = List | | No-tag-list = List | |
|
| | | | |
| | | Expires Mar 2003 50 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| Tagged-list = Resource 1*List | | Tagged-list = Resource 1*List | |
| Resource = Coded-URL | | Resource = Coded-URL | |
| List = "(" 1*(["Not"](State-token | "[" entity-tag "]")) ")" | | List = "(" 1*(["Not"](State-token | "[" entity-tag "]")) ")" | |
| State-token = Coded-URL | | State-token = Coded-URL | |
| Coded-URL = "<" absoluteURI ">" | | Coded-URL = "<" absoluteURI ">" | |
| | | | |
| The If header is intended to have similar functionality to the If- | | The If header is intended to have similar functionality to the If- | |
|
| Match header defined in section 14.25 of [RFC2068]. However the If | | Match header defined in section 14.24 of [RFC2616]. However the If | |
| header is intended for use with any URI which represents state | | header is intended for use with any URI which represents state | |
| information, referred to as a state token, about a resource as well | | 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 | | 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. | | lock tokens are the only state tokens defined in this specification. | |
| | | | |
|
| Expires Dec 2002 49 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| All DAV compliant resources MUST honor the If header. | | All DAV compliant resources MUST honor the If header. | |
| | | | |
| The If header's purpose is to describe a series of state lists. If | | 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 | | the state of the resource to which the header is applied does not | |
| match any of the specified state lists then the request MUST fail | | match any of the specified state lists then the request MUST fail | |
| with a 412 (Precondition Failed). If one of the described state | | with a 412 (Precondition Failed). If one of the described state | |
| lists matches the state of the resource then the request may | | lists matches the state of the resource then the request may | |
| succeed. | | succeed. | |
| | | | |
| Note that the absoluteURI production is defined in [RFC2396]. | | Note that the absoluteURI production is defined in [RFC2396]. | |
| | | | |
|
| 9.4.1 No-tag-list Production | | No-tag-list Production | |
| | | | |
| The No-tag-list production describes a series of state tokens and | | The No-tag-list production describes a series of state tokens and | |
| ETags. If multiple No-tag-list productions are used then one only | | 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 | | needs to match the state of the resource for the method to be | |
| allowed to continue. | | allowed to continue. | |
| | | | |
| If a method, due to the presence of a Depth or Destination header, | | If a method, due to the presence of a Depth or Destination header, | |
| is applied to multiple resources then the No-tag-list production | | is applied to multiple resources then the No-tag-list production | |
| MUST be applied to each resource the method is applied to. | | MUST be applied to each resource the method is applied to. | |
| | | | |
|
| 9.4.1.1 Example - No-tag-list If Header | | 9.5.1.1 Example - No-tag-list If Header | |
| | | | |
| If: (<locktoken:a-write-lock-token> ["I am an ETag"]) (["I am | | If: (<locktoken:a-write-lock-token> ["I am an ETag"]) (["I am | |
| another ETag"]) | | another ETag"]) | |
| | | | |
| The previous header would require that any resources within the | | The previous header would require that any resources within the | |
| scope of the method must either be locked with the specified lock | | 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 | | 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 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 | | 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 | | being in the form (or (and <locktoken:a-write-lock-token> ["I am an | |
| ETag"]) (and ["I am another ETag"])). | | ETag"]) (and ["I am another ETag"])). | |
| | | | |
|
| 9.4.2 Tagged-list Production | | Tagged-list Production | |
| | | | |
| The tagged-list production scopes a list production. That is, it | | The tagged-list production scopes a list production. That is, it | |
| specifies that the lists following the resource specification only | | specifies that the lists following the resource specification only | |
|
| | | | |
| | | Expires Mar 2003 51 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| apply to the specified resource. The scope of the resource | | apply to the specified resource. The scope of the resource | |
| production begins with the list production immediately following the | | production begins with the list production immediately following the | |
| resource production and ends with the next resource production, if | | resource production and ends with the next resource production, if | |
| any. | | any. | |
| | | | |
| When the If header is applied to a particular resource, the Tagged- | | When the If header is applied to a particular resource, the Tagged- | |
| list productions MUST be searched to determine if any of the listed | | list productions MUST be searched to determine if any of the listed | |
| resources match the operand resource(s) for the current method. If | | resources match the operand resource(s) for the current method. If | |
| none of the resource productions match the current resource then the | | none of the resource productions match the current resource then the | |
| header MUST be ignored. If one of the resource productions does | | header MUST be ignored. If one of the resource productions does | |
|
| | | | |
| Expires Dec 2002 50 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| match the name of the resource under consideration then the list | | match the name of the resource under consideration then the list | |
| productions following the resource production MUST be applied to the | | productions following the resource production MUST be applied to the | |
| resource in the manner specified in the previous section. | | resource in the manner specified in the previous section. | |
| | | | |
| The same URI MUST NOT appear more than once in a resource production | | The same URI MUST NOT appear more than once in a resource production | |
| in an If header. | | in an If header. | |
| | | | |
|
| 9.4.2.1 Example - Tagged List If header | | 9.5.1.2 Example - Tagged List If header | |
| | | | |
| COPY /resource1 HTTP/1.1 | | COPY /resource1 HTTP/1.1 | |
| Host: www.foo.bar | | Host: www.foo.bar | |
| Destination: http://www.foo.bar/resource2 | | Destination: http://www.foo.bar/resource2 | |
| If: <http://www.foo.bar/resource1> (<locktoken:a-write-lock-token> | | If: <http://www.foo.bar/resource1> (<locktoken:a-write-lock-token> | |
| [W/"A weak ETag"]) (["strong ETag"]) | | [W/"A weak ETag"]) (["strong ETag"]) | |
| <http://www.bar.bar/random>(["another strong ETag"]) | | <http://www.bar.bar/random>(["another strong ETag"]) | |
| | | | |
| In this example http://www.foo.bar/resource1 is being copied to | | 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/resource2. When the method is first applied to | |
| | | | |
| skipping to change at line 2594 | | skipping to change at line 2839 | |
| specified by "(<locktoken:a-write-lock-token> [W/"A weak ETag"]) | | specified by "(<locktoken:a-write-lock-token> [W/"A weak ETag"]) | |
| (["strong ETag"])", that is, it either must be locked with a lock | | (["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 | | 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". | | W/"A weak ETag" or it must have a strong entity tag "strong ETag". | |
| | | | |
| That is the only success condition since the resource | | That is the only success condition since the resource | |
| http://www.bar.bar/random never has the method applied to it (the | | http://www.bar.bar/random never has the method applied to it (the | |
| only other resource listed in the If header) and | | only other resource listed in the If header) and | |
| http://www.foo.bar/resource2 is not listed in the If header. | | http://www.foo.bar/resource2 is not listed in the If header. | |
| | | | |
|
| 9.4.3 not Production | | not Production | |
| | | | |
| Every state token or ETag is either current, and hence describes the | | 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, or is not current, and does not describe the | |
| state of a resource. The boolean operation of matching a state token | | 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 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. | | 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 | | The scope of the not production is the state-token or entity-tag | |
| immediately following it. | | immediately following it. | |
| | | | |
| If: (Not <locktoken:write1> <locktoken:write2>) | | If: (Not <locktoken:write1> <locktoken:write2>) | |
| | | | |
|
| | | Expires Mar 2003 52 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| When submitted with a request, this If header requires that all | | When submitted with a request, this If header requires that all | |
| operand resources must not be locked with locktoken:write1 and must | | operand resources must not be locked with locktoken:write1 and must | |
| be locked with locktoken:write2. | | be locked with locktoken:write2. | |
| | | | |
|
| 9.4.4 Matching Function | | Matching Function | |
| | | | |
| When performing If header processing, the definition of a matching | | When performing If header processing, the definition of a matching | |
| state token or entity tag is as follows. | | state token or entity tag is as follows. | |
| | | | |
|
| Expires Dec 2002 51 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| Matching entity tag: Where the entity tag matches an entity tag | | Matching entity tag: Where the entity tag matches an entity tag | |
| associated with that resource. | | associated with that resource. | |
| | | | |
| Matching state token: Where there is an exact match between the | | Matching state token: Where there is an exact match between the | |
| state token in the If header and any state token on the resource. | | state token in the If header and any state token on the resource. | |
| | | | |
|
| 9.4.5 If Header and Non-DAV Compliant Proxies | | If Header and Non-DAV Compliant Proxies | |
| | | | |
| Non-DAV compliant proxies will not honor the If header, since they | | Non-DAV compliant proxies will not honor the If header, since they | |
| will not understand the If header, and HTTP requires non-understood | | will not understand the If header, and HTTP requires non-understood | |
| headers to be ignored. When communicating with HTTP/1.1 proxies, | | headers to be ignored. When communicating with HTTP/1.1 proxies, | |
| the "Cache-Control: no-cache" request header MUST be used so as to | | the "Cache-Control: no-cache" request header MUST be used so as to | |
| prevent the proxy from improperly trying to service the request from | | prevent the proxy from improperly trying to service the request from | |
| its cache. When dealing with HTTP/1.0 proxies the "Pragma: no- | | its cache. When dealing with HTTP/1.0 proxies the "Pragma: no- | |
| cache" request header MUST be used for the same reason. | | cache" request header MUST be used for the same reason. | |
| | | | |
|
| 9.5 Lock-Token Header | | 9.6 Lock-Token Header | |
| | | | |
| Lock-Token = "Lock-Token" ":" Coded-URL | | Lock-Token = "Lock-Token" ":" Coded-URL | |
| | | | |
| The Lock-Token request header is used with the UNLOCK method to | | 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 | | identify the lock to be removed. The lock token in the Lock-Token | |
| request header MUST identify a lock that contains the resource | | request header MUST identify a lock that contains the resource | |
| identified by Request-URI as a member. | | identified by Request-URI as a member. | |
| | | | |
| The Lock-Token response header is used with the LOCK method to | | The Lock-Token response header is used with the LOCK method to | |
| indicate the lock token created as a result of a successful LOCK | | indicate the lock token created as a result of a successful LOCK | |
| request to create a new lock. | | request to create a new lock. | |
| | | | |
|
| 9.6 Overwrite Header | | 9.7 Overwrite Header | |
| | | | |
| Overwrite = "Overwrite" ":" ("T" | "F") | | Overwrite = "Overwrite" ":" ("T" | "F") | |
| | | | |
| The Overwrite header specifies whether the server should overwrite | | The Overwrite header specifies whether the server should overwrite | |
| the state of a non-null destination resource during a COPY or MOVE. | | 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 | | 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. | | 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 | | If the overwrite header is not included in a COPY or MOVE request | |
| then the resource MUST treat the request as if it has an overwrite | | then the resource MUST treat the request as if it has an overwrite | |
| header of value "T". While the Overwrite header appears to duplicate | | header of value "T". While the Overwrite header appears to duplicate | |
| the functionality of the If-Match: * header of HTTP/1.1, If-Match | | 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 | | applies only to the Request-URI, and not to the Destination of a | |
| COPY or MOVE. | | COPY or MOVE. | |
| | | | |
|
| | | Expires Mar 2003 53 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| If a COPY or MOVE is not performed due to the value of the Overwrite | | If a COPY or MOVE is not performed due to the value of the Overwrite | |
| header, the method MUST fail with a 412 (Precondition Failed) status | | header, the method MUST fail with a 412 (Precondition Failed) status | |
| code. | | code. | |
| | | | |
| All DAV compliant resources MUST support the Overwrite header. | | All DAV compliant resources MUST support the Overwrite header. | |
| | | | |
|
| Expires Dec 2002 52 WebDAV (RFC2518) bis June 2002 | | 9.8 Status-URI Response Header | |
| | | | |
| 9.7 Status-URI Response Header | | | |
| | | | |
| The Status-URI response header may be used with the 102 (Processing) | | 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. | | status code to inform the client as to the status of a method. | |
| | | | |
| Status-URI = "Status-URI" ":" *(Status-Code Coded-URL) ; Status-Code | | Status-URI = "Status-URI" ":" *(Status-Code Coded-URL) ; Status-Code | |
|
| is defined in 6.1.1 of [RFC2068] | | is defined in 6.1.1 of [RFC2616] | |
| | | | |
| The URIs listed in the header are source resources which have been | | The URIs listed in the header are source resources which have been | |
| affected by the outstanding method. The status code indicates the | | affected by the outstanding method. The status code indicates the | |
| resolution of the method on the identified resource. So, for | | resolution of the method on the identified resource. So, for | |
| example, if a MOVE method on a collection is outstanding and a 102 | | example, if a MOVE method on a collection is outstanding and a 102 | |
| (Processing) response with a Status-URI response header is returned, | | (Processing) response with a Status-URI response header is returned, | |
| the included URIs will indicate resources that have had move | | the included URIs will indicate resources that have had move | |
| attempted on them and what the result was. | | attempted on them and what the result was. | |
| | | | |
|
| 9.8 Timeout Request Header | | 9.9 Timeout Request Header | |
| | | | |
| TimeOut = "Timeout" ":" 1#TimeType | | TimeOut = "Timeout" ":" 1#TimeType | |
|
| TimeType = ("Second-" DAVTimeOutVal | "Infinite" | Other) | | TimeType = ("Second-" DAVTimeOutVal | "Infinite") | |
| DAVTimeOutVal = 1*digit | | DAVTimeOutVal = 1*digit | |
|
| Other = "Extend" field-value ; See section 4.2 of [RFC2068] | | | |
| | | | |
| Clients may include Timeout headers in their LOCK requests. | | Clients may include Timeout headers in their LOCK requests. | |
| However, the server is not required to honor or even consider these | | However, the server is not required to honor or even consider these | |
| requests. Clients MUST NOT submit a Timeout request header with any | | requests. Clients MUST NOT submit a Timeout request header with any | |
| method other than a LOCK method. | | method other than a LOCK method. | |
| | | | |
|
| A Timeout request header MUST contain at least one TimeType and may | | Timeout response values MUST use a Second value or Infinite. | |
| 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. | | | |
| | | | |
| Timeout response values MUST 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. | | | |
| | | | |
| The "Second" TimeType specifies the number of seconds that will | | The "Second" TimeType specifies the number of seconds that will | |
| elapse between granting of the lock at the server, and the automatic | | elapse between granting of the lock at the server, and the automatic | |
| removal of the lock. The timeout value for TimeType "Second" MUST | | removal of the lock. The timeout value for TimeType "Second" MUST | |
| NOT be greater than 2^32-1. | | NOT be greater than 2^32-1. | |
| | | | |
|
| The timeout counter SHOULD NOT be restarted any time an owner of the | | The timeout counter MUST be restarted if a refresh LOCK request is | |
| lock sends a method to any member of the lock, including unsupported | | successful. The timeout counter SHOULD NOT be restarted at any | |
| methods, or methods which are unsuccessful. However the lock MUST | | other time. | |
| be refreshed if a refresh LOCK method is successfully received. | | | |
| | | | |
| Expires Dec 2002 53 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| If the timeout expires then the lock may be lost. Specifically, if | | If the timeout expires then the lock may be lost. Specifically, if | |
| the server wishes to harvest the lock upon time-out, the server | | the server wishes to harvest the lock upon time-out, the server | |
| SHOULD act as if an UNLOCK method was executed by the server on the | | SHOULD 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 | | resource using the lock token of the timed-out lock, performed with | |
| its override authority. Thus logs should be updated with the | | its override authority. Thus logs should be updated with the | |
| disposition of the lock, notifications should be sent, etc., just as | | disposition of the lock, notifications should be sent, etc., just as | |
| they would be for an UNLOCK request. | | they would be for an UNLOCK request. | |
| | | | |
|
| | | Expires Mar 2003 54 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| Servers are advised to pay close attention to the values submitted | | Servers are advised to pay close attention to the values submitted | |
| by clients, as they will be indicative of the type of activity the | | by clients, as they will be indicative of the type of activity the | |
| client intends to perform. For example, an applet running in a | | client intends to perform. For example, an applet running in a | |
| browser may need to lock a resource, but because of the instability | | browser may need to lock a resource, but because of the instability | |
| of the environment within which the applet is running, the applet | | of the environment within which the applet is running, the applet | |
| may be turned off without warning. As a result, the applet is | | 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 | | likely to ask for a relatively small timeout value so that if the | |
| applet dies, the lock can be quickly harvested. However, a document | | applet dies, the lock can be quickly harvested. However, a document | |
| management system is likely to ask for an extremely long timeout | | management system is likely to ask for an extremely long timeout | |
| because its user may be planning on going off-line. | | because its user may be planning on going off-line. | |
| | | | |
| A client MUST NOT assume that just because the time-out has expired | | A client MUST NOT assume that just because the time-out has expired | |
|
| the lock has been lost. | | the lock has been lost. Likewise, a client MUST NOT assume that just | |
| | | because the time-out has not expired, the lock still exists (and for | |
| | | this reason, clients are strongly advised to use ETags as well). | |
| | | | |
| 10 Status Code Extensions to HTTP/1.1 | | 10 Status Code Extensions to HTTP/1.1 | |
| | | | |
| The following status codes are added to those defined in HTTP/1.1 | | The following status codes are added to those defined in HTTP/1.1 | |
|
| [RFC2068]. | | [RFC2616]. | |
| | | | |
| 10.1 102 Processing | | 10.1 102 Processing | |
| | | | |
| The 102 (Processing) status code is an interim response used to | | The 102 (Processing) status code is an interim response used to | |
| inform the client that the server has accepted the complete request, | | inform the client that the server has accepted the complete request, | |
| but has not yet completed it. This status code SHOULD only be sent | | but has not yet completed it. This status code SHOULD only be sent | |
| when the server has a reasonable expectation that the request will | | when the server has a reasonable expectation that the request will | |
| take significant time to complete. As guidance, if a method is | | take significant time to complete. As guidance, if a method is | |
| taking longer than 20 seconds (a reasonable, but arbitrary value) to | | taking longer than 20 seconds (a reasonable, but arbitrary value) to | |
| process the server SHOULD return a 102 (Processing) response. The | | process the server SHOULD return a 102 (Processing) response. The | |
| | | | |
| skipping to change at line 2768 | | skipping to change at line 3010 | |
| | | | |
| Methods can potentially take a long period of time to process, | | Methods can potentially take a long period of time to process, | |
| especially methods that support the Depth header. In such cases the | | especially methods that support the Depth header. In such cases the | |
| client may time-out the connection while waiting for a response. To | | client may time-out the connection while waiting for a response. To | |
| prevent this the server may return a 102 (Processing) status code to | | prevent this the server may return a 102 (Processing) status code to | |
| indicate to the client that the server is still processing the | | indicate to the client that the server is still processing the | |
| method. | | method. | |
| | | | |
| 10.2 207 Multi-Status | | 10.2 207 Multi-Status | |
| | | | |
|
| Expires Dec 2002 54 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| The 207 (Multi-Status) status code provides status for multiple | | The 207 (Multi-Status) status code provides status for multiple | |
|
| independent operations (see section Error! Reference source not | | independent operations (see section 11 for more information). | |
| found. for more information). | | | |
| | | | |
| 10.3 422 Unprocessable Entity | | 10.3 422 Unprocessable Entity | |
| | | | |
| The 422 (Unprocessable Entity) status code means the server | | The 422 (Unprocessable Entity) status code means the server | |
| understands the content type of the request entity (hence a | | understands the content type of the request entity (hence a | |
| 415(Unsupported Media Type) status code is inappropriate), and the | | 415(Unsupported Media Type) status code is inappropriate), and the | |
| syntax of the request entity is correct (thus a 400 (Bad Request) | | syntax of the request entity is correct (thus a 400 (Bad Request) | |
|
| | | | |
| | | Expires Mar 2003 55 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| status code is inappropriate) but was unable to process the | | status code is inappropriate) but was unable to process the | |
| contained instructions. For example, this error condition may occur | | contained instructions. For example, this error condition may occur | |
| if an XML request body contains well-formed (i.e., syntactically | | if an XML request body contains well-formed (i.e., syntactically | |
| correct), but semantically erroneous XML instructions. | | correct), but semantically erroneous XML instructions. | |
| | | | |
| 10.4 423 Locked | | 10.4 423 Locked | |
| | | | |
| The 423 (Locked) status code means the source or destination | | The 423 (Locked) status code means the source or destination | |
| resource of a method is locked. | | resource of a method is locked. | |
| | | | |
| | | | |
| skipping to change at line 2808 | | skipping to change at line 3052 | |
| 10.6 507 Insufficient Storage | | 10.6 507 Insufficient Storage | |
| | | | |
| The 507 (Insufficient Storage) status code means the method could | | The 507 (Insufficient Storage) status code means the method could | |
| not be performed on the resource because the server is unable to | | not be performed on the resource because the server is unable to | |
| store the representation needed to successfully complete the | | store the representation needed to successfully complete the | |
| request. This condition is considered to be temporary. If the | | request. This condition is considered to be temporary. If the | |
| request which received this status code was the result of a user | | request which received this status code was the result of a user | |
| action, the request MUST NOT be repeated until it is requested by a | | action, the request MUST NOT be repeated until it is requested by a | |
| separate user action. | | separate user action. | |
| | | | |
|
| 11 Multi-Status Response | | 11 Use of HTTP Status Codes | |
| | | | |
| | | 11.1 301 Moved Permanently | |
| | | | |
| | | Any WebDAV request may be redirected using this status code. | |
| | | | |
| | | 11.2 302 Found | |
| | | | |
| | | Any WebDAV request may be redirected using this status code. | |
| | | | |
| | | 11.3 400 Bad Request | |
| | | | |
| | | This code may be used if: | |
| | | - the Host header is missing in any request | |
| | | - The protocol version is HTTP/1.0 | |
| | | - Any header is improperly formatted | |
| | | - The request method line is improperly formatted | |
| | | | |
| | | 11.4 403 Forbidden | |
| | | | |
| | | Uses: | |
| | | - The server does not ever accept this method on this kind of | |
| | | resource. For example, a PUT is not accepted on a collection. | |
| | | | |
| | | Expires Mar 2003 56 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| | | 11.5 409 Conflict | |
| | | | |
| | | The 409 Conflict is most typically returned when a method that | |
| | | attempts to create a new resource must fail, because one of the | |
| | | collections that resource depends on does not exist. Therefore, | |
| | | this can be returned in response to a PUT request as well as the | |
| | | WebDAV methods that create resources. | |
| | | | |
| | | 11.6 414 Request-URI Too Long | |
| | | | |
| | | This status code is used in HTTP 1.1 only for Request-URIs, because | |
| | | full URIs arenÆt used in other headers. WebDAV specifies full URLs | |
| | | in other headers, therefore this error may be used if the URI is too | |
| | | long in other locations as well. This status code may be used in | |
| | | response to any method in this specification. | |
| | | 12 Multi-Status Response | |
| | | | |
| The default 207 (Multi-Status) response body is a text/xml or | | The default 207 (Multi-Status) response body is a text/xml or | |
| application/xml HTTP entity that contains a single XML element | | application/xml HTTP entity that contains a single XML element | |
| called multistatus, which contains a set of XML elements called | | called multistatus, which contains a set of XML elements called | |
| response which contain 200, 300, 400, and 500 series status codes | | response which contain 200, 300, 400, and 500 series status codes | |
| generated during the method invocation. 100 series status codes | | generated during the method invocation. 100 series status codes | |
|
| SHOULD NOT be recorded in a response XML element. | | SHOULD NOT be recorded in a response XML element. The 207 status | |
| | | code itself MUST NOT be considered a success response, it is only | |
| | | completely successful if all response elements inside contain | |
| | | success status codes. | |
| | | | |
|
| Expires Dec 2002 55 WebDAV (RFC2518) bis June 2002 | | The body of a 207 Multi-Status response MUST contain a URL | |
| | | associated with each specific status code, so that the client can | |
| | | tell whether the error occurred with the source resource, | |
| | | destination resource or some other resource in the scope of the | |
| | | request. URLs for collections appearing in the results SHOULD end in | |
| | | a æ/Æ character. | |
| | | | |
|
| 12 XML Element Definitions | | When a Multi-Status response does not have a clear scope (e.g. in | |
| | | response to MOVE or COPY when the scope could be either the source | |
| | | or the destination), URLs appearing in the response body SHOULD be | |
| | | absolute and fully-qualified URLs. | |
| | | | |
| | | When a Multi-Status response does have a clear scope, especially in | |
| | | response to a PROPFIND request when all URLs appearing in the body | |
| | | must be inside the collection named in the request-URI, the URLs MAY | |
| | | be absolute or MAY be relative. | |
| | | - If the URLs are absolute, then the server MUST ensure that the | |
| | | URLs have the same prefix (scheme, host, port, and path) as the URL | |
| | | of the requested collection (which may be the same as the Request- | |
| | | URI or may be the corrected in the response Location header). | |
| | | - If the URLs are relative, they MUST contain only the elements of | |
| | | the path that can be simply concatenated with the queried | |
| | | collectionÆs correct URL in order to make a complete and correct | |
| | | | |
| | | Expires Mar 2003 57 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| | | URL. The client MUST use the the Location header value as base URL | |
| | | if present, otherwise the request-URI (of the requested collection). | |
| | | | |
| | | 12.1 302 and 303 in Multi-Status | |
| | | | |
| | | When the 302 and 303 status codes are returned as the only status | |
| | | code for a response, HTTP1.1 uses the Location response header to | |
| | | indicate where the client should make the request. The Multi-Status | |
| | | response syntax does not allow for the Location header information | |
| | | to be included in an unambiguous way, so servers MAY choose not to | |
| | | use these status codes in Multi-Status responses. If a clients | |
| | | receives this status code in Multi-Status, the client MAY reissue | |
| | | the request to the individual resource, so that the server can issue | |
| | | a response with a Location header for each resource. | |
| | | | |
| | | 13 XML Element Definitions | |
| | | | |
| In the section below, the final line of each section gives the | | In the section below, the final line of each section gives the | |
| element type declaration using the format defined in [REC-XML]. The | | element type declaration using the format defined in [REC-XML]. The | |
| "Value" field, where present, specifies further restrictions on the | | "Value" field, where present, specifies further restrictions on the | |
| allowable contents of the XML element using BNF (i.e., to further | | allowable contents of the XML element using BNF (i.e., to further | |
| restrict the values of a PCDATA element). | | restrict the values of a PCDATA element). | |
| | | | |
|
| 12.1 activelock XML Element | | 13.1 activelock XML Element | |
| | | | |
| Name: activelock | | Name: activelock | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: Describes a lock on a resource. | | Purpose: Describes a lock on a resource. | |
| | | | |
|
| <!ELEMENT activelock (lockscope, locktype, depth, owner?, timeout?, | | <!ELEMENT activelock ANY> | |
| locktoken?) > | | ANY value: Any number of elements, including one of each of | |
| | | (lockscope, locktype, depth, owner, timeout, locktoken, lockroot) | |
| | | | |
|
| 12.1.1 depth XML Element | | 13.2 depth XML Element | |
| | | | |
| Name: depth | | Name: depth | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: The value of the Depth header. | | Purpose: The value of the Depth header. | |
| Value: "0" | "1" | "infinity" | | Value: "0" | "1" | "infinity" | |
| | | | |
| <!ELEMENT depth (#PCDATA) > | | <!ELEMENT depth (#PCDATA) > | |
| | | | |
|
| 12.1.2 locktoken XML Element | | 13.3 locktoken XML Element | |
| | | | |
| Name: locktoken | | Name: locktoken | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: The lock token associated with a lock. | | Purpose: The lock token associated with a lock. | |
|
| Description: The href contains one or more opaque lock token | | Description: The href contains a single lock token URI which | |
| URIs which all refer to the same lock (i.e., the | | refers to the lock (i.e., the OpaqueLockToken-URI | |
| OpaqueLockToken-URI production in section 6.4). | | production in section 6.4). | |
| | | | |
|
| <!ELEMENT locktoken (href+) > | | Expires Mar 2003 58 | |
| | | | |
|
| 12.1.3 timeout XML Element | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
|
| Name: timeout | | <!ELEMENT locktoken (href) > | |
| | | | |
| | | 13.4 lockroot XML Element | |
| | | | |
| | | Name: lockroot | |
| Namespace: DAV: | | Namespace: DAV: | |
|
| Purpose: The timeout associated with a lock | | Purpose: The resource where the lock is ôrootedö, which is the | |
| | | resource that was addressed in the LOCK request. | |
| | | Description: The href contains a URL with the address of the root of | |
| | | the lock. The server SHOULD include this in all | |
| | | lockdiscovery property values and the response to LOCK | |
| | | requests. | |
| | | | |
|
| Expires Dec 2002 56 WebDAV (RFC2518) bis June 2002 | | <!ELEMENT lockroot (href) > | |
| | | | |
|
| Value: TimeType ;Defined in section 23.2. | | 13.5 timeout XML Element | |
| | | | |
| | | Name: timeout | |
| | | Namespace: DAV: | |
| | | Purpose: The number of seconds remaining before a lock expires. | |
| | | Value: TimeType ;Defined in section 1.1. | |
| | | | |
| <!ELEMENT timeout (#PCDATA) > | | <!ELEMENT timeout (#PCDATA) > | |
| | | | |
|
| 12.2 collection XML Element | | 13.6 collection XML Element | |
| | | | |
| Name: collection | | Name: collection | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: Identifies the associated resource as a collection. The | | Purpose: Identifies the associated resource as a collection. The | |
| resourcetype property of a collection resource MUST have | | resourcetype property of a collection resource MUST have | |
|
| this value. | | this value. It is normally empty but extensions may add | |
| | | sub-elements. | |
| | | | |
| <!ELEMENT collection EMPTY > | | <!ELEMENT collection EMPTY > | |
| | | | |
|
| 12.3 href XML Element | | 13.7 href XML Element | |
| | | | |
| Name: href | | Name: href | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: Identifies the content of the element as a URI. | | Purpose: Identifies the content of the element as a URI. | |
|
| Value: URI ; See section 3.2.1 of [RFC2068] | | Value: URI ; See section 3.2.1 of [RFC2616] | |
| | | | |
| <!ELEMENT href (#PCDATA)> | | <!ELEMENT href (#PCDATA)> | |
| | | | |
|
| 12.4 link XML Element | | 13.8 lockentry XML Element | |
| | | | |
| Name: link | | | |
| Namespace: DAV: | | | |
| Purpose: Identifies the property as a link and contains the source | | | |
| and destination of that link. | | | |
| Description: 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 MUST | | | |
| NOT be rejected if they point to resources which do not | | | |
| exist. | | | |
| | | | |
| <!ELEMENT link (src+, dst+) > | | | |
| | | | |
| 12.4.1 dst XML Element | | | |
| | | | |
| Name: dst | | | |
| | | | |
| Expires Dec 2002 57 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| Namespace: DAV: | | | |
| Purpose: Indicates the destination of a link | | | |
| Value: URI | | | |
| | | | |
| <!ELEMENT dst (#PCDATA) > | | | |
| | | | |
| 12.4.2 src XML Element | | | |
| | | | |
|
| Name: src | | Name: lockentry | |
| Namespace: DAV: | | | |
| Purpose: Indicates the source of a link. | | | |
| Value: URI | | | |
| | | | |
|
| <!ELEMENT src (#PCDATA) > | | Expires Mar 2003 59 | |
| | | | |
|
| 12.5 lockentry XML Element | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
|
| Name: lockentry | | | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: Defines the types of locks that can be used with the | | Purpose: Defines the types of locks that can be used with the | |
| resource. | | resource. | |
| | | | |
|
| <!ELEMENT lockentry (lockscope, locktype) > | | <!ELEMENT lockentry ANY > | |
| | | ANY value: any number of elements, including one of each of | |
| | | (lockscope, locktype) | |
| | | | |
|
| 12.6 lockinfo XML Element | | 13.9 lockinfo XML Element | |
| | | | |
| Name: lockinfo | | Name: lockinfo | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: The lockinfo XML element is used with a LOCK method to | | Purpose: The lockinfo XML element is used with a LOCK method to | |
| specify the type of lock the client wishes to have created. | | specify the type of lock the client wishes to have created. | |
| | | | |
|
| <!ELEMENT lockinfo (lockscope, locktype, owner?) > | | <!ELEMENT lockinfo ANY > | |
| | | ANY value: any number of elements, including one of each of | |
| | | (lockscope, locktype), and optionally including the owner element. | |
| | | | |
|
| 12.7 lockscope XML Element | | 13.10 lockscope XML Element | |
| | | | |
| Name: lockscope | | Name: lockscope | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: Specifies whether a lock is an exclusive lock, or a shared | | Purpose: Specifies whether a lock is an exclusive lock, or a shared | |
| lock. | | lock. | |
| | | | |
| <!ELEMENT lockscope (exclusive | shared) > | | <!ELEMENT lockscope (exclusive | shared) > | |
| | | | |
|
| Expires Dec 2002 58 WebDAV (RFC2518) bis June 2002 | | 13.11 exclusive XML Element | |
| | | | |
| 12.7.1 exclusive XML Element | | | |
| | | | |
| Name: exclusive | | Name: exclusive | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: Specifies an exclusive lock | | Purpose: Specifies an exclusive lock | |
| | | | |
| <!ELEMENT exclusive EMPTY > | | <!ELEMENT exclusive EMPTY > | |
| | | | |
|
| 12.7.2 shared XML Element | | 13.12 shared XML Element | |
| | | | |
| Name: shared | | Name: shared | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: Specifies a shared lock | | Purpose: Specifies a shared lock | |
| | | | |
| <!ELEMENT shared EMPTY > | | <!ELEMENT shared EMPTY > | |
| | | | |
|
| 12.8 locktype XML Element | | 13.13 locktype XML Element | |
| | | | |
| Name: locktype | | Name: locktype | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: Specifies the access type of a lock. At present, this | | Purpose: Specifies the access type of a lock. At present, this | |
| specification only defines one lock type, the write lock. | | specification only defines one lock type, the write lock. | |
| | | | |
|
| <!ELEMENT locktype (write) > | | Expires Mar 2003 60 | |
| | | | |
|
| 12.8.1 write XML Element | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| | | <!ELEMENT locktype ANY > | |
| | | ANY value: Any element meaning a lock type. The only such element | |
| | | defined in this document is the write element. | |
| | | | |
| | | 13.14 write XML Element | |
| | | | |
| Name: write | | Name: write | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: Specifies a write lock. | | Purpose: Specifies a write lock. | |
| | | | |
| <!ELEMENT write EMPTY > | | <!ELEMENT write EMPTY > | |
| | | | |
|
| 12.9 multistatus XML Element | | 13.15 multistatus XML Element | |
| | | | |
| Name: multistatus | | Name: multistatus | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: Contains multiple response messages. | | Purpose: Contains multiple response messages. | |
| Description: The responsedescription at the top level is | | Description: The responsedescription at the top level is | |
| used to provide a general message describing the | | used to provide a general message describing the | |
| overarching nature of the response. If this value is | | overarching nature of the response. If this value is | |
| available an application may use it instead of presenting | | available an application may use it instead of presenting | |
| the individual response descriptions contained within the | | the individual response descriptions contained within the | |
| responses. | | responses. | |
| | | | |
|
| Expires Dec 2002 59 WebDAV (RFC2518) bis June 2002 | | <!ELEMENT multistatus ANY > | |
| | | ANY value: At least one response element, and zero or more | |
| <!ELEMENT multistatus (response+, responsedescription?) > | | responsedescription elements, plus other elements not defined in | |
| | | this document. | |
| | | | |
|
| 12.9.1 response XML Element | | 13.16 response XML Element | |
| | | | |
| Name: response | | Name: response | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: Holds a single response describing the effect of a method | | Purpose: Holds a single response describing the effect of a method | |
| on resource and/or its properties. | | on resource and/or its properties. | |
| Description: A particular href MUST NOT appear more than | | Description: A particular href MUST NOT appear more than | |
| once as the child of a response XML element under a | | once as the child of a response XML element under a | |
| multistatus XML element. This requirement is necessary in | | multistatus XML element. This requirement is necessary in | |
| order to keep processing costs for a response to linear | | order to keep processing costs for a response to linear | |
| time. Essentially, this prevents having to search in order | | time. Essentially, this prevents having to search in order | |
| to group together all the responses by href. There are, | | to group together all the responses by href. There are, | |
| however, no requirements regarding ordering based on href | | however, no requirements regarding ordering based on href | |
| values. | | values. | |
| | | | |
|
| <!ELEMENT response (href, ((href*, status)|(propstat+)), | | <!ELEMENT response ANY > | |
| responsedescription?) > | | ANY value: MUST contain an href element. MUST contain a status | |
| | | element or a propstat element. MAY contain a responsedescription | |
| | | | |
|
| 12.9.1.1 propstat XML Element | | Expires Mar 2003 61 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| | | element. May contain additional elements not defined in this | |
| | | document. | |
| | | | |
| | | 13.17 propstat XML Element | |
| | | | |
| Name: propstat | | Name: propstat | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: Groups together a prop and status element that is | | Purpose: Groups together a prop and status element that is | |
| associated with a particular href element. | | associated with a particular href element. | |
| Description: The propstat XML element MUST contain one prop | | Description: The propstat XML element MUST contain one prop | |
| XML element and one status XML element. The contents of | | XML element and one status XML element. The contents of | |
| the prop XML element MUST only list the names of properties | | the prop XML element MUST only list the names of properties | |
| to which the result in the status element applies. | | to which the result in the status element applies. | |
| | | | |
|
| <!ELEMENT propstat (prop, status, responsedescription?) > | | <!ELEMENT propstat ANY > | |
| | | ANY value: Contains one of each of (prop, status) and may contain a | |
| | | responsedescription element. May also contain elements not defined | |
| | | in this document. | |
| | | | |
|
| 12.9.1.2 status XML Element | | 13.18 status XML Element | |
| | | | |
| Name: status | | Name: status | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: Holds a single HTTP status-line | | Purpose: Holds a single HTTP status-line | |
|
| Value: status-line ;status-line defined in [RFC2068] | | Value: status-line ;status-line defined in [RFC2616] | |
| | | | |
| <!ELEMENT status (#PCDATA) > | | <!ELEMENT status (#PCDATA) > | |
| | | | |
|
| 12.9.2 responsedescription XML Element | | 13.19 responsedescription XML Element | |
| | | | |
| Name: responsedescription | | Name: responsedescription | |
|
| | | | |
| Expires Dec 2002 60 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: Contains a message that can be displayed to the user | | Purpose: Contains a message that can be displayed to the user | |
| explaining the nature of the response. | | explaining the nature of the response. | |
| Description: This XML element provides information suitable | | Description: This XML element provides information suitable | |
| to be presented to a user. | | to be presented to a user. | |
| | | | |
| <!ELEMENT responsedescription (#PCDATA) > | | <!ELEMENT responsedescription (#PCDATA) > | |
| | | | |
|
| 12.10 owner XML Element | | 13.20 owner XML Element | |
| | | | |
| Name: owner | | Name: owner | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: Provides information about the principal taking out a lock. | | Purpose: Provides information about the principal taking out a lock. | |
| Description: The owner XML element provides information | | Description: The owner XML element provides information | |
| sufficient for either directly contacting a principal (such | | sufficient for either directly contacting a principal (such | |
| as a telephone number or Email URI), or for discovering the | | as a telephone number or Email URI), or for discovering the | |
| principal (such as the URL of a homepage) who owns a lock. | | principal (such as the URL of a homepage) who owns a lock. | |
| | | | |
|
| | | Expires Mar 2003 62 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| <!ELEMENT owner ANY> | | <!ELEMENT owner ANY> | |
| | | | |
|
| 12.11 prop XML element | | 13.21 prop XML element | |
| | | | |
| Name: prop | | Name: prop | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: Contains properties related to a resource. | | Purpose: Contains properties related to a resource. | |
| Description: The prop XML element is a generic container for | | Description: The prop XML element is a generic container for | |
| properties defined on resources. All elements inside a | | properties defined on resources. All elements inside a | |
| prop XML element MUST define properties related to the | | prop XML element MUST define properties related to the | |
| resource. No other elements may be used inside of a prop | | resource. No other elements may be used inside of a prop | |
| element. | | element. | |
| | | | |
| <!ELEMENT prop ANY> | | <!ELEMENT prop ANY> | |
| | | | |
|
| 12.12 propertyupdate XML element | | 13.22 propertyupdate XML element | |
| | | | |
| Name: propertyupdate | | Name: propertyupdate | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: Contains a request to alter the properties on a resource. | | Purpose: Contains a request to alter the properties on a resource. | |
| Description: This XML element is a container for the | | Description: This XML element is a container for the | |
| information required to modify the properties on the | | information required to modify the properties on the | |
| resource. This XML element is multi-valued. | | resource. This XML element is multi-valued. | |
| | | | |
|
| <!ELEMENT propertyupdate (remove | set)+ > | | <!ELEMENT propertyupdate ANY > | |
| | | ANY value: Must contain at least one remove or set element. May | |
| Expires Dec 2002 61 WebDAV (RFC2518) bis June 2002 | | contain any number of remove and set elements. May contain | |
| | | additional elements not defined in this document. | |
| | | | |
|
| 12.12.1 remove XML element | | 13.23 remove XML element | |
| | | | |
| Name: remove | | Name: remove | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: Lists the DAV properties to be removed from a resource. | | Purpose: Lists the DAV properties to be removed from a resource. | |
| Description: Remove instructs that the properties specified | | Description: Remove instructs that the properties specified | |
| in prop should be removed. Specifying the removal of a | | in prop should be removed. Specifying the removal of a | |
| property that does not exist is not an error. All the XML | | property that does not exist is not an error. All the XML | |
| elements in a prop XML element inside of a remove XML | | elements in a prop XML element inside of a remove XML | |
| element MUST be empty, as only the names of properties to | | element MUST be empty, as only the names of properties to | |
| be removed are required. | | be removed are required. | |
| | | | |
| <!ELEMENT remove (prop) > | | <!ELEMENT remove (prop) > | |
| | | | |
|
| 12.12.2 set XML element | | 13.24 set XML element | |
| | | | |
| Name: set | | Name: set | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: Lists the DAV property values to be set for a resource. | | Purpose: Lists the DAV property values to be set for a resource. | |
|
| Description: The set XML element MUST contain only a prop | | | |
| XML element. The elements contained by the prop XML | | Expires Mar 2003 63 | |
| element inside the set XML element MUST specify the name | | | |
| and value of properties that are set on the resource | | WebDAV (RFC2518) bis September 2002 | |
| identified by Request-URI. If a property already exists | | | |
| then its value is replaced. Language tagging information in | | Description: The set XML element MUST contain only a prop XML | |
| the property's value (in the "xml:lang" attribute, if | | element. The elements contained by the prop XML element | |
| present) MUST be persistently stored along with the | | inside the set XML element MUST specify the name and value | |
| property, and MUST be subsequently retrievable using | | of properties that are set on the resource identified by | |
| PROPFIND. | | 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) MUST be | |
| | | persistently stored along with the property, and MUST be | |
| | | subsequently retrievable using PROPFIND. | |
| | | | |
| <!ELEMENT set (prop) > | | <!ELEMENT set (prop) > | |
| | | | |
|
| 12.13 propfind XML Element | | 13.25 propfind XML Element | |
| | | | |
| Name: propfind | | Name: propfind | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: Specifies the properties to be returned from a PROPFIND | | Purpose: Specifies the properties to be returned from a PROPFIND | |
| method. Two special elements are specified for use with | | method. Two special elements are specified for use with | |
| propfind, allprop and propname. If prop is used inside | | propfind, allprop and propname. If prop is used inside | |
| propfind it MUST only contain property names, not values. | | propfind it MUST only contain property names, not values. | |
| | | | |
|
| <!ELEMENT propfind (allprop | propname | prop) > | | <!ELEMENT propfind ANY > | |
| | | ANY value: MUST contain one and only one of (allprop | propname | | |
| 12.13.1 allprop XML Element | | prop). MAY contain additional elements not defined in this | |
| | | document. | |
| | | | |
|
| Expires Dec 2002 62 WebDAV (RFC2518) bis June 2002 | | 13.26 allprop XML Element | |
| | | | |
| Name: allprop | | Name: allprop | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: The allprop XML element specifies that all property names | | Purpose: The allprop XML element specifies that all property names | |
| and values on the resource are to be returned. | | and values on the resource are to be returned. | |
| | | | |
| <!ELEMENT allprop EMPTY > | | <!ELEMENT allprop EMPTY > | |
| | | | |
|
| 12.13.2 propname XML Element | | 13.27 propname XML Element | |
| | | | |
| Name: propname | | Name: propname | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: The propname XML element specifies that only a list of | | Purpose: The propname XML element specifies that only a list of | |
| property names on the resource is to be returned. | | property names on the resource is to be returned. | |
| | | | |
| <!ELEMENT propname EMPTY > | | <!ELEMENT propname EMPTY > | |
| | | | |
|
| Expires Dec 2002 63 WebDAV (RFC2518) bis June 2002 | | 14 DAV Properties | |
| | | | |
| 13 DAV Properties | | | |
| | | | |
| For DAV properties, the name of the property is also the same as the | | 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 | | name of the XML element that contains its value. In the section | |
| below, the final line of each section gives the element type | | below, the final line of each section gives the element type | |
|
| | | | |
| | | Expires Mar 2003 64 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| declaration using the format defined in [REC-XML]. The "Value" | | declaration using the format defined in [REC-XML]. The "Value" | |
| field, where present, specifies further restrictions on the | | field, where present, specifies further restrictions on the | |
| allowable contents of the XML element using BNF (i.e., to further | | allowable contents of the XML element using BNF (i.e., to further | |
|
| restrict the values of a PCDATA element). | | restrict the values of a PCDATA element). Note that a resource may | |
| | | have only one value for a property of a given name, so the property | |
| | | may only show up once in PROPFIND responses or PROPPATCH requests. | |
| | | | |
|
| 13.1 creationdate Property | | The value of a protected property may not be changed even by a user | |
| | | with permission to edit other properties. Some property values are | |
| | | calculated by the server and it is not appropriate to allow client | |
| | | changes. This specification mentions which properties may be | |
| | | protected in order to set client expectations. | |
| | | | |
| | | 14.1 creationdate Property | |
| | | | |
| Name: creationdate | | Name: creationdate | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: Records the time and date the resource was created. | | Purpose: Records the time and date the resource was created. | |
|
| Value: date-time ; See Appendix 2 | | Value: date-time | |
| Description: The creationdate property should be defined on | | COPY/MOVE behaviour: This property value SHOULD be kept during a | |
| all DAV compliant resources. If present, it contains a | | MOVE operation, but is re-initialized when a resource is | |
| timestamp of the moment when the resource was created | | created with a COPY. It should not be set in a remote COPY. | |
| (i.e., the moment it had non-null state). This property is | | Description: The creationdate property should be defined on all DAV | |
| live and protected. | | 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). This property is live and | |
| | | protected. The Internet date-time format is defined in | |
| | | [RFC3339], see the ABNF in section 5.6. | |
| | | | |
| <!ELEMENT creationdate (#PCDATA) > | | <!ELEMENT creationdate (#PCDATA) > | |
| | | | |
|
| 13.2 displayname Property | | 14.2 displayname Property | |
| | | | |
| Name: displayname | | Name: displayname | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: Provides a name for the resource that is suitable for | | Purpose: Provides a name for the resource that is suitable for | |
| presentation to a user. | | presentation to a user. | |
|
| | | COPY/MOVE behaviour: This property value SHOULD be preserved in | |
| | | local COPY and MOVE operations. It MAY be attempted to be | |
| | | set in remote COPY operation. | |
| Description: The displayname property should be defined on | | Description: The displayname property should be defined on | |
| all DAV compliant resources. If present, the property | | all DAV compliant resources. If present, the property | |
| contains a description of the resource that is suitable for | | contains a description of the resource that is suitable for | |
| presentation to a user. This property is live and MAY be | | presentation to a user. This property is live and MAY be | |
| protected. | | protected. | |
| | | | |
| <!ELEMENT displayname (#PCDATA) > | | <!ELEMENT displayname (#PCDATA) > | |
| | | | |
|
| 13.3 getcontentlanguage Property | | 14.3 getcontentlanguage Property | |
| | | | |
| | | Expires Mar 2003 65 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| Name: getcontentlanguage | | Name: getcontentlanguage | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: Contains the Content-Language header returned by a GET | | Purpose: Contains the Content-Language header returned by a GET | |
| without accept headers | | without accept headers | |
|
| | | COPY/MOVE behaviour: This property value SHOULD be preserved in | |
| Expires Dec 2002 64 WebDAV (RFC2518) bis June 2002 | | local COPY and MOVE operations. It should be attempted to | |
| | | be set in remote COPY operation. | |
| Description: The getcontentlanguage property MUST be defined | | Description: The getcontentlanguage property MUST be defined | |
| on any DAV compliant resource that returns the Content- | | on any DAV compliant resource that returns the Content- | |
| Language header on a GET. This property is live and MAY be | | Language header on a GET. This property is live and MAY be | |
| protected. | | protected. | |
| Value: language-tag ;language-tag is defined in section 14.13 of | | Value: language-tag ;language-tag is defined in section 14.13 of | |
|
| [RFC2068] | | [RFC2616] | |
| | | | |
| <!ELEMENT getcontentlanguage (#PCDATA) > | | <!ELEMENT getcontentlanguage (#PCDATA) > | |
| | | | |
|
| 13.4 getcontentlength Property | | 14.4 getcontentlength Property | |
| | | | |
| Name: getcontentlength | | Name: getcontentlength | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: Contains the Content-Length header returned by a GET | | Purpose: Contains the Content-Length header returned by a GET | |
| without accept headers. | | without accept headers. | |
| Description: The getcontentlength property MUST be defined | | Description: The getcontentlength property MUST be defined | |
| on any DAV compliant resource that returns the Content- | | on any DAV compliant resource that returns the Content- | |
| Length header in response to a GET. This property is live | | Length header in response to a GET. This property is live | |
| and protected. | | and protected. | |
|
| Value: content-length ; see section 14.14 of [RFC2068] | | COPY/MOVE behaviour: This property value is dependent on the size of | |
| | | the destination resource, not the value of the property on | |
| | | the source resource. | |
| | | Value: content-length ; see section 14.14 of [RFC2616] | |
| | | | |
| <!ELEMENT getcontentlength (#PCDATA) > | | <!ELEMENT getcontentlength (#PCDATA) > | |
| | | | |
|
| 13.5 getcontenttype Property | | 14.5 getcontenttype Property | |
| | | | |
| Name: getcontenttype | | Name: getcontenttype | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: Contains the Content-Type header returned by a GET without | | Purpose: Contains the Content-Type header returned by a GET without | |
| accept headers. | | accept headers. | |
|
| | | COPY/MOVE behaviour: This property value SHOULD be preserved in | |
| | | local COPY and MOVE operations. In a remote COPY operation | |
| | | that is implemented through a GET request, the GET request | |
| | | must have the appropriate Content-Type header. | |
| Description: This getcontenttype property MUST be defined on | | Description: This getcontenttype property MUST be defined on | |
| any DAV compliant resource that returns the Content-Type | | any DAV compliant resource that returns the Content-Type | |
| header in response to a GET. This property is live and MAY | | header in response to a GET. This property is live and MAY | |
| be protected. | | be protected. | |
|
| Value: media-type ; defined in section 3.7 of [RFC2068] | | Value: media-type ; defined in section 3.7 of [RFC2616] | |
| | | | |
| | | Expires Mar 2003 66 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| <!ELEMENT getcontenttype (#PCDATA) > | | <!ELEMENT getcontenttype (#PCDATA) > | |
| | | | |
|
| 13.6 getetag Property | | 14.6 getetag Property | |
| | | | |
| Name: getetag | | Name: getetag | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: Contains the ETag header returned by a GET without accept | | Purpose: Contains the ETag header returned by a GET without accept | |
| headers. | | headers. | |
|
| | | COPY/MOVE behaviour: This property value is dependent on the final | |
| Expires Dec 2002 65 WebDAV (RFC2518) bis June 2002 | | state of the destination resource, not the value of the | |
| | | property on the source resource. It MUST NOT be set in | |
| | | PROPPATCH during a cross-server copy. | |
| Description: The getetag property MUST be defined on any DAV | | Description: The getetag property MUST be defined on any DAV | |
|
| compliant resource that returns the Etag header. This | | compliant resource that returns the Etag header. Refer to | |
| property is live and protected. | | RFC2616 for a complete definition of the semantics of an | |
| Value: entity-tag ; defined in section 3.11 of [RFC2068] | | ETag. Note that changes in properties or lock state MUST | |
| | | not cause a resourceÆs ETag to change This property is live | |
| | | and protected. | |
| | | Value: entity-tag ; defined in section 3.11 of [RFC2616] | |
| | | | |
| <!ELEMENT getetag (#PCDATA) > | | <!ELEMENT getetag (#PCDATA) > | |
| | | | |
|
| 13.7 getlastmodified Property | | 14.7 getlastmodified Property | |
| | | | |
| Name: getlastmodified | | Name: getlastmodified | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: Contains the Last-Modified header returned by a GET method | | Purpose: Contains the Last-Modified header returned by a GET method | |
| without accept headers. | | without accept headers. | |
|
| Description: Note that the last-modified date on a resource | | COPY/MOVE behaviour: This property value is dependent on the last | |
| may reflect changes in any part of the state of the | | modified date of the destination resource, not the value of | |
| resource, not necessarily just a change to the response to | | the property on the source resource. | |
| the GET method. For example, a change in a property may | | Description: Note that the last-modified date on a resource SHOULD | |
| cause the last-modified date to change. The getlastmodified | | only reflect changes in the body (the GET responses) of the | |
| property MUST be defined on any DAV compliant resource that | | resource. A change in a property SHOULD NOT cause the | |
| returns the Last-Modified header in response to a GET. This | | last-modified date to change, because clients MAY rely on | |
| property is live and protected. | | the last-modified date to know when to overwrite the | |
| Value: HTTP-date ; defined in section 3.3.1 of [RFC2068] | | existing body. The getlastmodified property MUST be defined | |
| | | on any DAV compliant resource that returns the Last- | |
| | | Modified header in response to a GET. This property is live | |
| | | and protected. | |
| | | Value: HTTP-date ; defined in section 3.3.1 of [RFC2616] | |
| | | | |
| <!ELEMENT getlastmodified (#PCDATA) > | | <!ELEMENT getlastmodified (#PCDATA) > | |
| | | | |
|
| 13.8 lockdiscovery Property | | 14.8 lockdiscovery Property | |
| | | | |
| Name: lockdiscovery | | Name: lockdiscovery | |
| Namespace: DAV: | | Namespace: DAV: | |
|
| | | | |
| | | Expires Mar 2003 67 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| Purpose: Describes the active locks on a resource | | Purpose: Describes the active locks on a resource | |
|
| Description: The lockdiscovery property returns a listing of | | COPY/MOVE behaviour: The value of this property depends on the lock | |
| who has a lock, what type of lock he has, the timeout type | | state of the destination, not on the locks of the source | |
| and the time remaining on the timeout, and the associated | | resource. Recall that locks are not moved in a MOVE | |
| lock token. The server is free to withhold any or all of | | operation. | |
| this information if the requesting principal does not have | | Description: The lockdiscovery property returns a listing of who has | |
| sufficient access rights to see the requested data. This | | a lock, what type of lock he has, the timeout type and the | |
| property is live and protected. | | time remaining on the timeout, and the associated lock | |
| | | token. If there are no locks, but the server supports | |
| | | locks, the property will be present but contain zero | |
| | | æactivelockÆ elements. If there is one or more lock, an | |
| | | æactivelockÆ element appears for each lock on the resource. | |
| | | This property is live and protected. | |
| | | | |
|
| <!ELEMENT lockdiscovery (activelock)* > | | <!ELEMENT lockdiscovery ANY > | |
| | | ANY value: MAY contain zero or more activelock elements. MAY contain | |
| | | additional elements not defined in this document. | |
| | | | |
|
| 13.8.1 Example - Retrieving the lockdiscovery Property | | 14.8.1 Example - Retrieving the lockdiscovery Property | |
| | | | |
| >>Request | | >>Request | |
| | | | |
| PROPFIND /container/ HTTP/1.1 | | PROPFIND /container/ HTTP/1.1 | |
|
| | | | |
| Expires Dec 2002 66 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| Host: www.foo.bar | | Host: www.foo.bar | |
| Content-Length: xxxx | | Content-Length: xxxx | |
| Content-Type: text/xml; charset="utf-8" | | Content-Type: text/xml; charset="utf-8" | |
| | | | |
| <?xml version="1.0" encoding="utf-8" ?> | | <?xml version="1.0" encoding="utf-8" ?> | |
| <D:propfind xmlns:D='DAV:'> | | <D:propfind xmlns:D='DAV:'> | |
| <D:prop><D:lockdiscovery/></D:prop> | | <D:prop><D:lockdiscovery/></D:prop> | |
| </D:propfind> | | </D:propfind> | |
| | | | |
| >>Response | | >>Response | |
| | | | |
| skipping to change at line 3327 | | skipping to change at line 3717 | |
| <?xml version="1.0" encoding="utf-8" ?> | | <?xml version="1.0" encoding="utf-8" ?> | |
| <D:multistatus xmlns:D='DAV:'> | | <D:multistatus xmlns:D='DAV:'> | |
| <D:response> | | <D:response> | |
| <D:href>http://www.foo.bar/container/</D:href> | | <D:href>http://www.foo.bar/container/</D:href> | |
| <D:propstat> | | <D:propstat> | |
| <D:prop> | | <D:prop> | |
| <D:lockdiscovery> | | <D:lockdiscovery> | |
| <D:activelock> | | <D:activelock> | |
| <D:locktype><D:write/></D:locktype> | | <D:locktype><D:write/></D:locktype> | |
| <D:lockscope><D:exclusive/></D:lockscope> | | <D:lockscope><D:exclusive/></D:lockscope> | |
|
| | | | |
| | | Expires Mar 2003 68 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| <D:depth>0</D:depth> | | <D:depth>0</D:depth> | |
| <D:owner>Jane Smith</D:owner> | | <D:owner>Jane Smith</D:owner> | |
| <D:timeout>Infinite</D:timeout> | | <D:timeout>Infinite</D:timeout> | |
| <D:locktoken> | | <D:locktoken> | |
| <D:href>opaquelocktoken:f81de2ad-7f3d-a1b2-4f3c- | | <D:href>opaquelocktoken:f81de2ad-7f3d-a1b2-4f3c- | |
| 00a0c91a9d76</D:href> | | 00a0c91a9d76</D:href> | |
| </D:locktoken> | | </D:locktoken> | |
|
| | | <D:lockroot> | |
| | | <D:href>http://www.foo.bar/container/</D:href> | |
| | | </D:lockroot> | |
| </D:activelock> | | </D:activelock> | |
| </D:lockdiscovery> | | </D:lockdiscovery> | |
| </D:prop> | | </D:prop> | |
| <D:status>HTTP/1.1 200 OK</D:status> | | <D:status>HTTP/1.1 200 OK</D:status> | |
| </D:propstat> | | </D:propstat> | |
| </D:response> | | </D:response> | |
| </D:multistatus> | | </D:multistatus> | |
| | | | |
| This resource has a single exclusive write lock on it, with an | | This resource has a single exclusive write lock on it, with an | |
| infinite timeout. | | infinite timeout. | |
| | | | |
|
| 13.9 resourcetype Property | | 14.9 resourcetype Property | |
| | | | |
| Name: resourcetype | | Name: resourcetype | |
| Namespace: DAV: | | Namespace: DAV: | |
|
| | | | |
| Expires Dec 2002 67 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| Purpose: Specifies the nature of the resource. | | Purpose: Specifies the nature of the resource. | |
|
| | | COPY/MOVE behaviour: Generally a COPY/MOVE of a resource results in | |
| | | the same type of resource at the destination. In a remote | |
| | | COPY, the source server SHOULD NOT attempt to set this | |
| | | property. | |
| Description: The resourcetype property MUST be defined on | | Description: The resourcetype property MUST be defined on | |
| all DAV compliant resources. The default value is empty. | | all DAV compliant resources. The default value is empty. | |
| This property is live and protected. | | This property is live and protected. | |
| | | | |
| <!ELEMENT resourcetype ANY > | | <!ELEMENT resourcetype ANY > | |
| | | | |
|
| 13.10 source Property | | Example: (fictional example to show extensibility) | |
| | | <x:resourcetype xmlns:x=öDAV:ö><x:collection/><f:search- | |
| Name: source | | results xmlns:f=öfoonsö/></x:resourcetype> | |
| Namespace: DAV: | | | |
| Purpose: The destination of the source link identifies the resource | | | |
| that contains the unprocessed source of the linkÆs source. | | | |
| Description: 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. This property is live and MAY be protected. | | | |
| | | | |
| <!ELEMENT source (link)* > | | | |
| | | | |
| 13.10.1 Example - A source Property | | | |
| | | | |
| <?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> | | | |
| | | | |
| Expires Dec 2002 68 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| 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. | | | |
| | | | |
|
| 13.11 supportedlock Property | | 14.10 supportedlock Property | |
| | | | |
| Name: supportedlock | | Name: supportedlock | |
| Namespace: DAV: | | Namespace: DAV: | |
| Purpose: To provide a listing of the lock capabilities supported by | | Purpose: To provide a listing of the lock capabilities supported by | |
| the resource. | | the resource. | |
|
| | | COPY/MOVE behaviour: This property value is dependent on the kind of | |
| | | locks supported at the destination, not on the value of the | |
| | | | |
| | | Expires Mar 2003 69 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| | | property at the source resource. It should not be attempted | |
| | | to be set on a remote COPY. | |
| Description: The supportedlock property of a resource | | Description: The supportedlock property of a resource | |
| returns a listing of the combinations of scope and access | | returns a listing of the combinations of scope and access | |
| types which may be specified in a lock request on the | | types which may be specified in a lock request on the | |
| resource. Note that the actual contents are themselves | | resource. Note that the actual contents are themselves | |
| controlled by access controls so a server is not required | | controlled by access controls so a server is not required | |
| to provide information the client is not authorized to see. | | to provide information the client is not authorized to see. | |
| This property is live and protected. | | This property is live and protected. | |
| | | | |
|
| <!ELEMENT supportedlock (lockentry)* > | | <!ELEMENT supportedlock ANY > | |
| | | | |
|
| 13.11.1 Example - Retrieving the supportedlock Property | | 14.10.1 Example - Retrieving the supportedlock Property | |
| | | | |
| >>Request | | >>Request | |
| | | | |
| PROPFIND /container/ HTTP/1.1 | | PROPFIND /container/ HTTP/1.1 | |
| Host: www.foo.bar | | Host: www.foo.bar | |
| Content-Length: xxxx | | Content-Length: xxxx | |
| Content-Type: text/xml; charset="utf-8" | | Content-Type: text/xml; charset="utf-8" | |
| | | | |
| <?xml version="1.0" encoding="utf-8" ?> | | <?xml version="1.0" encoding="utf-8" ?> | |
| <D:propfind xmlns:D="DAV:"> | | <D:propfind xmlns:D="DAV:"> | |
| <D:prop><D:supportedlock/></D:prop> | | <D:prop><D:supportedlock/></D:prop> | |
| </D:propfind> | | </D:propfind> | |
| | | | |
| >>Response | | >>Response | |
| | | | |
| HTTP/1.1 207 Multi-Status | | HTTP/1.1 207 Multi-Status | |
| Content-Type: text/xml; charset="utf-8" | | Content-Type: text/xml; charset="utf-8" | |
|
| | | | |
| Expires Dec 2002 69 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| Content-Length: xxxx | | Content-Length: xxxx | |
| | | | |
| <?xml version="1.0" encoding="utf-8" ?> | | <?xml version="1.0" encoding="utf-8" ?> | |
| <D:multistatus xmlns:D="DAV:"> | | <D:multistatus xmlns:D="DAV:"> | |
| <D:response> | | <D:response> | |
| <D:href>http://www.foo.bar/container/</D:href> | | <D:href>http://www.foo.bar/container/</D:href> | |
| <D:propstat> | | <D:propstat> | |
| <D:prop> | | <D:prop> | |
| <D:supportedlock> | | <D:supportedlock> | |
| <D:lockentry> | | <D:lockentry> | |
| <D:lockscope><D:exclusive/></D:lockscope> | | <D:lockscope><D:exclusive/></D:lockscope> | |
| <D:locktype><D:write/></D:locktype> | | <D:locktype><D:write/></D:locktype> | |
| </D:lockentry> | | </D:lockentry> | |
| <D:lockentry> | | <D:lockentry> | |
| <D:lockscope><D:shared/></D:lockscope> | | <D:lockscope><D:shared/></D:lockscope> | |
| <D:locktype><D:write/></D:locktype> | | <D:locktype><D:write/></D:locktype> | |
| </D:lockentry> | | </D:lockentry> | |
| </D:supportedlock> | | </D:supportedlock> | |
|
| | | | |
| | | Expires Mar 2003 70 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| </D:prop> | | </D:prop> | |
| <D:status>HTTP/1.1 200 OK</D:status> | | <D:status>HTTP/1.1 200 OK</D:status> | |
| </D:propstat> | | </D:propstat> | |
| </D:response> | | </D:response> | |
| </D:multistatus> | | </D:multistatus> | |
| | | | |
|
| 14 Instructions for Processing XML in DAV | | 15 Instructions for Processing XML in DAV | |
| | | | |
| All DAV compliant resources MUST ignore any unknown XML element and | | All DAV compliant resources MUST ignore any unknown XML element and | |
| all its children encountered while processing a DAV method that uses | | all its children encountered while processing a DAV method that uses | |
| XML as its command language. | | XML as its command language. | |
| | | | |
| This restriction also applies to the processing, by clients, of DAV | | This restriction also applies to the processing, by clients, of DAV | |
| property values where unknown XML elements SHOULD be ignored unless | | property values where unknown XML elements SHOULD be ignored unless | |
| the property's schema declares otherwise. | | the property's schema declares otherwise. | |
| | | | |
| This restriction does not apply to setting dead DAV properties on | | This restriction does not apply to setting dead DAV properties on | |
| | | | |
| skipping to change at line 3496 | | skipping to change at line 3856 | |
| | | | |
| Additionally, this restriction does not apply to the use of XML | | Additionally, this restriction does not apply to the use of XML | |
| where XML happens to be the content type of the entity body, for | | where XML happens to be the content type of the entity body, for | |
| example, when used as the body of a PUT. | | example, when used as the body of a PUT. | |
| | | | |
| Since XML can be transported as text/xml or application/xml, a DAV | | Since XML can be transported as text/xml or application/xml, a DAV | |
| server MUST accept DAV method requests with XML parameters | | server MUST accept DAV method requests with XML parameters | |
| transported as either text/xml or application/xml, and DAV client | | transported as either text/xml or application/xml, and DAV client | |
| MUST accept XML responses using either text/xml or application/xml. | | MUST accept XML responses using either text/xml or application/xml. | |
| | | | |
|
| Expires Dec 2002 70 WebDAV (RFC2518) bis June 2002 | | 16 DAV Compliance Classes | |
| | | | |
| 15 DAV Compliance Classes | | | |
| | | | |
|
| A DAV compliant resource can choose from two classes of compliance. | | A DAV compliant resource can advertise several classes of | |
| A client can discover the compliance classes of a resource by | | compliance. A client can discover the compliance classes of a | |
| executing OPTIONS on the resource, and examining the "DAV" header | | resource by executing OPTIONS on the resource, and examining the | |
| which is returned. | | "DAV" header which is returned. Note particularly that resources | |
| | | are spoken of as being compliant, rather than servers. That is | |
| | | because theoretically some resources on a server could support | |
| | | different feature sets. E.g. a server could have a sub-repository | |
| | | where an advanced feature like server was supported, even if that | |
| | | feature was not supported on all servers. | |
| | | | |
| Since this document describes extensions to the HTTP/1.1 protocol, | | Since this document describes extensions to the HTTP/1.1 protocol, | |
| minimally all DAV compliant resources, clients, and proxies MUST be | | minimally all DAV compliant resources, clients, and proxies MUST be | |
|
| compliant with [RFC2068]. | | compliant with [RFC2616]. | |
| | | | |
|
| Compliance classes are not necessarily sequential. A resource that | | A resource that is class 2 compliant must also be class 1 compliant, | |
| is class 2 compliant must also be class 1 compliant; but if | | and a resource that is compliant with ôbisö must also be class 1 | |
| additional compliance classes are defined later, a resource that is | | compliant. | |
| 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. | | | |
| | | | |
|
| 15.1 Class 1 | | 16.1 Class 1 | |
| | | | |
| | | Expires Mar 2003 71 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| A class 1 compliant resource MUST meet all "MUST" requirements in | | A class 1 compliant resource MUST meet all "MUST" requirements in | |
| all sections of this document. | | all sections of this document. | |
| | | | |
| Class 1 compliant resources MUST return, at minimum, the value "1" | | Class 1 compliant resources MUST return, at minimum, the value "1" | |
| in the DAV header on all responses to the OPTIONS method. | | in the DAV header on all responses to the OPTIONS method. | |
| | | | |
|
| 15.2 Class 2 | | 16.2 Class 2 | |
| | | | |
| A class 2 compliant resource MUST meet all class 1 requirements and | | A class 2 compliant resource MUST meet all class 1 requirements and | |
| support the LOCK method, the supportedlock property, the | | support the LOCK method, the supportedlock property, the | |
| lockdiscovery property, the Time-Out response header and the Lock- | | lockdiscovery property, the Time-Out response header and the Lock- | |
| Token request header. A class "2" compliant resource SHOULD also | | Token request header. A class "2" compliant resource SHOULD also | |
| support the Time-Out request header and the owner XML element. | | support the Time-Out request header and the owner XML element. | |
| | | | |
| Class 2 compliant resources MUST return, at minimum, the values "1" | | Class 2 compliant resources MUST return, at minimum, the values "1" | |
| and "2" in the DAV header on all responses to the OPTIONS method. | | and "2" in the DAV header on all responses to the OPTIONS method. | |
| | | | |
|
| 16 Internationalization Considerations | | 16.3 Class ôbisö | |
| | | | |
| | | A resource can explicitly advertise its support for the revisions to | |
| | | RFC2518 made in this document. In particular, this allows clients to | |
| | | use the Force-Authentication header on requests. Class 1 must be | |
| | | supported as well. Class 2 MAY be supported. | |
| | | | |
| | | A resource that supports bis MUST support: | |
| | | - the Force-Authentication header. | |
| | | - Any behavior that it supports, in the manner specified in this | |
| | | document, rather than in the manner specified in RFC2518, for all | |
| | | client requests. A server MAY use an older behavior for specific | |
| | | clients that are discovered to have interoperability problems with | |
| | | the requirements of this specification, but MUST NOT use an older | |
| | | behavior indiscriminately. | |
| | | | |
| | | Example: | |
| | | | |
| | | DAV: 1, bis | |
| | | | |
| | | 17 Internationalization Considerations | |
| | | | |
| In the realm of internationalization, this specification complies | | In the realm of internationalization, this specification complies | |
| with the IETF Character Set Policy [RFC2277]. In this specification, | | with the IETF Character Set Policy [RFC2277]. In this specification, | |
| human-readable fields can be found either in the value of a | | human-readable fields can be found either in the value of a | |
| property, or in an error message returned in a response entity body. | | property, or in an error message returned in a response entity body. | |
| In both cases, the human-readable content is encoded using XML, | | In both cases, the human-readable content is encoded using XML, | |
| which has explicit provisions for character set tagging and | | which has explicit provisions for character set tagging and | |
| encoding, and requires that XML processors read XML elements | | encoding, and requires that XML processors read XML elements | |
| encoded, at minimum, using the UTF-8 [UTF-8] encoding of the ISO | | encoded, at minimum, using the UTF-8 [UTF-8] encoding of the ISO | |
| 10646 multilingual plane. XML examples in this specification | | 10646 multilingual plane. XML examples in this specification | |
|
| | | demonstrate use of the charset parameter of the Content-Type header, | |
| | | as defined in [RFC2376], as well as the XML declarations which | |
| | | provide charset identification information for MIME and XML | |
| | | processors. | |
| | | | |
|
| Expires Dec 2002 71 WebDAV (RFC2518) bis June 2002 | | Expires Mar 2003 72 | |
| | | | |
|
| demonstrate use of the charset parameter of the Content-Type header, | | WebDAV (RFC2518) bis September 2002 | |
| as defined in [RFC2376], as well as the XML "encoding" attribute, | | | |
| which together provide charset identification information for MIME | | | |
| and XML processors. | | | |
| | | | |
| XML also provides a language tagging capability for specifying the | | XML also provides a language tagging capability for specifying the | |
|
| language of the contents of a particular XML element. XML uses | | language of the contents of a particular XML element. The | |
| either IANA registered language tags (see [RFC1766]) or ISO 639 | | "xml:lang" attribute appears on an XML element to identify the | |
| language tags [ISO-639] in the "xml:lang" attribute of an XML | | language of its content and attributes. See [REC-XML] for | |
| element to identify the language of its content and attributes. | | definitions of values and scoping. | |
| | | | |
| WebDAV applications MUST support the character set tagging, | | WebDAV applications MUST support the character set tagging, | |
| character set encoding, and the language tagging functionality of | | character set encoding, and the language tagging functionality of | |
| the XML specification. Implementors of WebDAV applications are | | the XML specification. Implementors of WebDAV applications are | |
| strongly encouraged to read "XML Media Types" [RFC2376] for | | strongly encouraged to read "XML Media Types" [RFC2376] for | |
| instruction on which MIME media type to use for XML transport, and | | instruction on which MIME media type to use for XML transport, and | |
| on use of the charset parameter of the Content-Type header. | | on use of the charset parameter of the Content-Type header. | |
| | | | |
| Names used within this specification fall into three categories: | | Names used within this specification fall into three categories: | |
| names of protocol elements such as methods and headers, names of XML | | names of protocol elements such as methods and headers, names of XML | |
| elements, and names of properties. Naming of protocol elements | | elements, and names of properties. Naming of protocol elements | |
| follows the precedent of HTTP, using English names encoded in | | follows the precedent of HTTP, using English names encoded in | |
| USASCII for methods and headers. Since these protocol elements are | | USASCII for methods and headers. Since these protocol elements are | |
|
| not visible to users, and are in fact simply long token identifiers, | | not visible to users, and are simply long token identifiers, they do | |
| they do not need to support encoding in multiple character sets. | | not need to support multiple languages. Similarly, the names of XML | |
| Similarly, though the names of XML elements used in this | | elements used in this specification are not visible to the user and | |
| specification are English names encoded in UTF-8, these names are | | hence do not need to support multiple languages. | |
| not visible to the user, and hence do not need to support multiple | | | |
| character set encodings. | | | |
| | | | |
|
| The name of a property defined on a resource is a URI. Although | | WebDAV property names are qualified XML names (pairs of XML | |
| some applications (e.g., a generic property viewer) will display | | namespace name and local name). Although some applications (e.g., a | |
| property URIs directly to their users, it is expected that the | | generic property viewer) will display property names directly to | |
| typical application will use a fixed set of properties, and will | | their users, it is expected that the typical application will use a | |
| provide a mapping from the property name URI to a human-readable | | fixed set of properties, and will provide a mapping from the | |
| field when displaying the property name to a user. It is only in | | property name URI to a human-readable field when displaying the | |
| the case where the set of properties is not known ahead of time that | | property name to a user. It is only in the case where the set of | |
| an application need display a property name URI to a user. We | | properties is not known ahead of time that an application need | |
| recommend that applications provide human-readable property names | | display a property name URI to a user. We recommend that | |
| wherever feasible. | | applications provide human-readable property names wherever | |
| | | feasible. | |
| | | | |
| For error reporting, we follow the convention of HTTP/1.1 status | | For error reporting, we follow the convention of HTTP/1.1 status | |
| codes, including with each status code a short, English description | | codes, including with each status code a short, English description | |
| of the code (e.g., 423 (Locked)). While the possibility exists that | | of the code (e.g., 423 (Locked)). While the possibility exists that | |
| a poorly crafted user agent would display this message to a user, | | a poorly crafted user agent would display this message to a user, | |
| internationalized applications will ignore this message, and display | | internationalized applications will ignore this message, and display | |
| an appropriate message in the user's language and character set. | | an appropriate message in the user's language and character set. | |
| | | | |
| Since interoperation of clients and servers does not require locale | | Since interoperation of clients and servers does not require locale | |
| information, this specification does not specify any mechanism for | | information, this specification does not specify any mechanism for | |
| transmission of this information. | | transmission of this information. | |
| | | | |
|
| Expires Dec 2002 72 WebDAV (RFC2518) bis June 2002 | | 18 Security Considerations | |
| | | | |
| 17 Security Considerations | | | |
| | | | |
| This section is provided to detail issues concerning security | | This section is provided to detail issues concerning security | |
| implications of which WebDAV applications need to be aware. | | implications of which WebDAV applications need to be aware. | |
| | | | |
| All of the security considerations of HTTP/1.1 (discussed in | | All of the security considerations of HTTP/1.1 (discussed in | |
|
| [RFC2068]) and XML (discussed in [RFC2376]) also apply to WebDAV. In | | [RFC2616]) and XML (discussed in [RFC2376]) also apply to WebDAV. In | |
| | | | |
| | | Expires Mar 2003 73 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| addition, the security risks inherent in remote authoring require | | addition, the security risks inherent in remote authoring require | |
| stronger authentication technology, introduce several new privacy | | stronger authentication technology, introduce several new privacy | |
| concerns, and may increase the hazards from poor server design. | | concerns, and may increase the hazards from poor server design. | |
| These issues are detailed below. | | These issues are detailed below. | |
| | | | |
|
| 17.1 Authentication of Clients | | 18.1 Authentication of Clients | |
| | | | |
| Due to their emphasis on authoring, WebDAV servers need to use | | Due to their emphasis on authoring, WebDAV servers need to use | |
| authentication technology to protect not just access to a network | | authentication technology to protect not just access to a network | |
| resource, but the integrity of the resource as well. Furthermore, | | resource, but the integrity of the resource as well. Furthermore, | |
| the introduction of locking functionality requires support for | | the introduction of locking functionality requires support for | |
| authentication. | | authentication. | |
| | | | |
| A password sent in the clear over an insecure channel is an | | A password sent in the clear over an insecure channel is an | |
| inadequate means for protecting the accessibility and integrity of a | | inadequate means for protecting the accessibility and integrity of a | |
| resource as the password may be intercepted. Since Basic | | resource as the password may be intercepted. Since Basic | |
| | | | |
| skipping to change at line 3645 | | skipping to change at line 4032 | |
| an isolated network in a building with restricted access. | | an isolated network in a building with restricted access. | |
| | | | |
| WebDAV applications MUST support the Digest authentication scheme | | WebDAV applications MUST support the Digest authentication scheme | |
| [RFC2069]. Since Digest authentication verifies that both parties to | | [RFC2069]. Since Digest authentication verifies that both parties to | |
| a communication know a shared secret, a password, without having to | | a communication know a shared secret, a password, without having to | |
| send that secret in the clear, Digest authentication avoids the | | send that secret in the clear, Digest authentication avoids the | |
| security problems inherent in Basic authentication while providing a | | security problems inherent in Basic authentication while providing a | |
| level of authentication which is useful in a wide range of | | level of authentication which is useful in a wide range of | |
| scenarios. | | scenarios. | |
| | | | |
|
| 17.2 Denial of Service | | 18.2 Denial of Service | |
| | | | |
| Denial of service attacks are of special concern to WebDAV servers. | | Denial of service attacks are of special concern to WebDAV servers. | |
| WebDAV plus HTTP enables denial of service attacks on every part of | | WebDAV plus HTTP enables denial of service attacks on every part of | |
| a system's resources. | | a system's resources. | |
| | | | |
| The underlying storage can be attacked by PUTting extremely large | | The underlying storage can be attacked by PUTting extremely large | |
| files. | | files. | |
| | | | |
|
| Expires Dec 2002 73 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| Asking for recursive operations on large collections can attack | | Asking for recursive operations on large collections can attack | |
| processing time. | | processing time. | |
| | | | |
| Making multiple pipelined requests on multiple connections can | | Making multiple pipelined requests on multiple connections can | |
| attack network connections. | | attack network connections. | |
| | | | |
| WebDAV servers need to be aware of the possibility of a denial of | | WebDAV servers need to be aware of the possibility of a denial of | |
| service attack at all levels. | | service attack at all levels. | |
| | | | |
|
| 17.3 Security through Obscurity | | Expires Mar 2003 74 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| | | 18.3 Security through Obscurity | |
| | | | |
| WebDAV provides, through the PROPFIND method, a mechanism for | | WebDAV provides, through the PROPFIND method, a mechanism for | |
| listing the member resources of a collection. This greatly | | listing the member resources of a collection. This greatly | |
| diminishes the effectiveness of security or privacy techniques that | | diminishes the effectiveness of security or privacy techniques that | |
| rely only on the difficulty of discovering the names of network | | rely only on the difficulty of discovering the names of network | |
| resources. Users of WebDAV servers are encouraged to use access | | resources. Users of WebDAV servers are encouraged to use access | |
| control techniques to prevent unwanted access to resources, rather | | control techniques to prevent unwanted access to resources, rather | |
| than depending on the relative obscurity of their resource names. | | than depending on the relative obscurity of their resource names. | |
| | | | |
|
| 17.4 Privacy Issues Connected to Locks | | 18.4 Privacy Issues Connected to Locks | |
| | | | |
| When submitting a lock request a user agent may also submit an owner | | When submitting a lock request a user agent may also submit an owner | |
| XML field giving contact information for the person taking out the | | XML field giving contact information for the person taking out the | |
| lock (for those cases where a person, rather than a robot, is taking | | lock (for those cases where a person, rather than a robot, is taking | |
| out the lock). This contact information is stored in a lockdiscovery | | out the lock). This contact information is stored in a lockdiscovery | |
| property on the resource, and can be used by other collaborators to | | property on the resource, and can be used by other collaborators to | |
| begin negotiation over access to the resource. However, in many | | begin negotiation over access to the resource. However, in many | |
| cases this contact information can be very private, and should not | | cases this contact information can be very private, and should not | |
| be widely disseminated. Servers SHOULD limit read access to the | | be widely disseminated. Servers SHOULD limit read access to the | |
| lockdiscovery property as appropriate. Furthermore, user agents | | lockdiscovery property as appropriate. Furthermore, user agents | |
| SHOULD provide control over whether contact information is sent at | | SHOULD provide control over whether contact information is sent at | |
| all, and if contact information is sent, control over exactly what | | all, and if contact information is sent, control over exactly what | |
| information is sent. | | information is sent. | |
| | | | |
|
| 17.5 Privacy Issues Connected to Properties | | 18.5 Privacy Issues Connected to Properties | |
| | | | |
| Since property values are typically used to hold information such as | | Since property values are typically used to hold information such as | |
| the author of a document, there is the possibility that privacy | | the author of a document, there is the possibility that privacy | |
| concerns could arise stemming from widespread access to a resource's | | concerns could arise stemming from widespread access to a resource's | |
| property data. To reduce the risk of inadvertent release of private | | property data. To reduce the risk of inadvertent release of private | |
| information via properties, servers are encouraged to develop access | | information via properties, servers are encouraged to develop access | |
| control mechanisms that separate read access to the resource body | | control mechanisms that separate read access to the resource body | |
| and read access to the resource's properties. This allows a user to | | and read access to the resource's properties. This allows a user to | |
| control the dissemination of their property data without overly | | control the dissemination of their property data without overly | |
| restricting access to the resource's contents. | | restricting access to the resource's contents. | |
| | | | |
|
| Expires Dec 2002 74 WebDAV (RFC2518) bis June 2002 | | 18.6 Reduction of Security due to Source Link | |
| | | | |
| 17.6 Reduction of Security due to Source Link | | | |
| | | | |
| HTTP/1.1 warns against providing read access to script code because | | HTTP/1.1 warns against providing read access to script code because | |
| it may contain sensitive information. Yet WebDAV, via its source | | it may contain sensitive information. Yet WebDAV, via its source | |
| link facility, can potentially provide a URI for script resources so | | link facility, can potentially provide a URI for script resources so | |
| they may be authored. For HTTP/1.1, a server could reasonably | | they may be authored. For HTTP/1.1, a server could reasonably | |
| prevent access to source resources due to the predominance of read- | | prevent access to source resources due to the predominance of read- | |
| only access. WebDAV, with its emphasis on authoring, encourages | | only access. WebDAV, with its emphasis on authoring, encourages | |
| read and write access to source resources, and provides the source | | read and write access to source resources, and provides the source | |
| link facility to identify the source. This reduces the security | | link facility to identify the source. This reduces the security | |
| benefits of eliminating access to source resources. Users and | | benefits of eliminating access to source resources. Users and | |
| administrators of WebDAV servers should be very cautious when | | administrators of WebDAV servers should be very cautious when | |
| allowing remote authoring of scripts, limiting read and write access | | allowing remote authoring of scripts, limiting read and write access | |
| to the source resources to authorized principals. | | to the source resources to authorized principals. | |
| | | | |
|
| 17.7 Implications of XML External Entities | | 18.7 Implications of XML External Entities | |
| | | | |
| | | Expires Mar 2003 75 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| XML supports a facility known as "external entities", defined in | | XML supports a facility known as "external entities", defined in | |
| section 4.2.2 of [REC-XML], which instruct an XML processor to | | section 4.2.2 of [REC-XML], which instruct an XML processor to | |
| retrieve and include additional XML. An external XML entity can be | | retrieve and include additional XML. An external XML entity can be | |
| used to append or modify the document type declaration (DTD) | | used to append or modify the document type declaration (DTD) | |
| associated with an XML document. An external XML entity can also be | | associated with an XML document. An external XML entity can also be | |
| used to include XML within the content of an XML document. For non- | | used to include XML within the content of an XML document. For non- | |
| validating XML, such as the XML used in this specification, | | validating XML, such as the XML used in this specification, | |
| including an external XML entity is not required by [REC-XML]. | | including an external XML entity is not required by [REC-XML]. | |
| However, [REC-XML] does state that an XML processor may, at its | | However, [REC-XML] does state that an XML processor may, at its | |
| | | | |
| skipping to change at line 3748 | | skipping to change at line 4139 | |
| Therefore, implementers must be aware that external XML entities | | Therefore, implementers must be aware that external XML entities | |
| should be treated as untrustworthy. | | should be treated as untrustworthy. | |
| | | | |
| There is also the scalability risk that would accompany a widely | | There is also the scalability risk that would accompany a widely | |
| deployed application which made use of external XML entities. In | | deployed application which made use of external XML entities. In | |
| this situation, it is possible that there would be significant | | this situation, it is possible that there would be significant | |
| numbers of requests for one external XML entity, potentially | | numbers of requests for one external XML entity, potentially | |
| overloading any server which fields requests for the resource | | overloading any server which fields requests for the resource | |
| containing the external XML entity. | | containing the external XML entity. | |
| | | | |
|
| 17.8 Risks Connected with Lock Tokens | | 18.8 Risks Connected with Lock Tokens | |
| | | | |
| This specification, in section 6.4, requires the use of Universal | | This specification, in section 6.4, requires the use of Universal | |
| Unique Identifiers (UUIDs) for lock tokens, in order to guarantee | | Unique Identifiers (UUIDs) for lock tokens, in order to guarantee | |
| their uniqueness across space and time. UUIDs, as defined in [ISO- | | their uniqueness across space and time. UUIDs, as defined in [ISO- | |
| 11578], contain a "node" field which "consists of the IEEE address, | | 11578], contain a "node" field which "consists of the IEEE address, | |
|
| | | | |
| Expires Dec 2002 75 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| usually the host address. For systems with multiple IEEE 802 nodes, | | usually the host address. For systems with multiple IEEE 802 nodes, | |
| any available node address can be used." Since a WebDAV server will | | any available node address can be used." Since a WebDAV server will | |
| issue many locks over its lifetime, the implication is that it will | | issue many locks over its lifetime, the implication is that it will | |
| also be publicly exposing its IEEE 802 address. | | also be publicly exposing its IEEE 802 address. | |
| | | | |
| There are several risks associated with exposure of IEEE 802 | | There are several risks associated with exposure of IEEE 802 | |
| addresses. Using the IEEE 802 address: | | addresses. Using the IEEE 802 address: | |
| | | | |
| * It is possible to track the movement of hardware from subnet to | | * It is possible to track the movement of hardware from subnet to | |
| subnet. | | subnet. | |
| | | | |
| * It may be possible to identify the manufacturer of the hardware | | * It may be possible to identify the manufacturer of the hardware | |
| running a WebDAV server. | | running a WebDAV server. | |
| | | | |
| * It may be possible to determine the number of each type of | | * It may be possible to determine the number of each type of | |
| computer running WebDAV. | | computer running WebDAV. | |
|
| Section 23.4 of this specification details an alternate mechanism | | Section 24.3 of this specification details an alternate mechanism | |
| for generating the "node" field of a UUID without using an IEEE 802 | | for generating the "node" field of a UUID without using an IEEE 802 | |
| address, which alleviates the risks associated with exposure of IEEE | | address, which alleviates the risks associated with exposure of IEEE | |
| 802 addresses by using an alternate source of uniqueness. | | 802 addresses by using an alternate source of uniqueness. | |
| | | | |
|
| 18 IANA Considerations | | Expires Mar 2003 76 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| | | 19 IANA Considerations | |
| | | | |
| This document defines two namespaces, the namespace of property | | This document defines two namespaces, the namespace of property | |
| names, and the namespace of WebDAV-specific XML elements used within | | names, and the namespace of WebDAV-specific XML elements used within | |
| property values. | | property values. | |
| | | | |
| URIs are used for both names, for several reasons. Assignment of a | | URIs are used for both names, for several reasons. Assignment of a | |
| URI does not require a request to a central naming authority, and | | URI does not require a request to a central naming authority, and | |
| hence allow WebDAV property names and XML elements to be quickly | | hence allow WebDAV property names and XML elements to be quickly | |
| defined by any WebDAV user or application. URIs also provide a | | defined by any WebDAV user or application. URIs also provide a | |
| unique address space, ensuring that the distributed users of WebDAV | | unique address space, ensuring that the distributed users of WebDAV | |
| | | | |
| skipping to change at line 3807 | | skipping to change at line 4199 | |
| | | | |
| This specification also defines a URI scheme for the encoding of | | This specification also defines a URI scheme for the encoding of | |
| lock tokens, the opaquelocktoken URI scheme described in section | | lock tokens, the opaquelocktoken URI scheme described in section | |
| 6.4. | | 6.4. | |
| | | | |
| To ensure correct interoperation based on this specification, IANA | | To ensure correct interoperation based on this specification, IANA | |
| must reserve the URI namespaces starting with "DAV:" and with | | must reserve the URI namespaces starting with "DAV:" and with | |
| "opaquelocktoken:" for use by this specification, its revisions, and | | "opaquelocktoken:" for use by this specification, its revisions, and | |
| related WebDAV specifications. | | related WebDAV specifications. | |
| | | | |
|
| Expires Dec 2002 76 WebDAV (RFC2518) bis June 2002 | | 20 Intellectual Property | |
| | | | |
| 19 Intellectual Property | | | |
| | | | |
| The following notice is copied from RFC 2026 [RFC2026], section | | The following notice is copied from RFC 2026 [RFC2026], section | |
| 10.4, and describes the position of the IETF concerning intellectual | | 10.4, and describes the position of the IETF concerning intellectual | |
| property claims made against this document. | | property claims made against this document. | |
| | | | |
| The IETF takes no position regarding the validity or scope of any | | The IETF takes no position regarding the validity or scope of any | |
| intellectual property or other rights that might be claimed to | | intellectual property or other rights that might be claimed to | |
| pertain to the implementation or use other technology described in | | pertain to the implementation or use other technology described in | |
| this document or the extent to which any license under such rights | | this document or the extent to which any license under such rights | |
| might or might not be available; neither does it represent that it | | might or might not be available; neither does it represent that it | |
| | | | |
| skipping to change at line 3832 | | skipping to change at line 4222 | |
| standards-related documentation can be found in BCP-11. Copies of | | standards-related documentation can be found in BCP-11. Copies of | |
| claims of rights made available for publication and any assurances | | claims of rights made available for publication and any assurances | |
| of licenses to be made available, or the result of an attempt made | | 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 | | to obtain a general license or permission for the use of such | |
| proprietary rights by implementors or users of this specification | | proprietary rights by implementors or users of this specification | |
| can be obtained from the IETF Secretariat. | | can be obtained from the IETF Secretariat. | |
| | | | |
| The IETF invites any interested party to bring to its attention any | | The IETF invites any interested party to bring to its attention any | |
| copyrights, patents or patent applications, or other proprietary | | copyrights, patents or patent applications, or other proprietary | |
| rights which may cover technology that may be required to practice | | rights which may cover technology that may be required to practice | |
|
| | | | |
| | | Expires Mar 2003 77 | |
| | | | |
| | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| this standard. Please address the information to the IETF Executive | | this standard. Please address the information to the IETF Executive | |
| Director. | | Director. | |
| | | | |
|
| 20 Acknowledgements | | 21 Acknowledgements | |
| | | | |
| A specification such as this thrives on piercing critical review and | | A specification such as this thrives on piercing critical review and | |
| withers from apathetic neglect. The authors gratefully acknowledge | | withers from apathetic neglect. The authors gratefully acknowledge | |
| the contributions of the following people, whose insights were so | | the contributions of the following people, whose insights were so | |
| valuable at every stage of our work. | | valuable at every stage of our work. | |
| | | | |
| Terry Allen, Harald Alvestrand, Jim Amsden, Becky Anderson, Alan | | Terry Allen, Harald Alvestrand, Jim Amsden, Becky Anderson, Alan | |
| Babich, Sanford Barr, Dylan Barrell, Bernard Chester, Tim Berners- | | Babich, Sanford Barr, Dylan Barrell, Bernard Chester, Tim Berners- | |
| Lee, Dan Connolly, Jim Cunningham, Ron Daniel, Jr., Jim Davis, Keith | | Lee, Dan Connolly, Jim Cunningham, Ron Daniel, Jr., Jim Davis, Keith | |
| Dawson, Mark Day, Brian Deen, Martin Duerst, David Durand, Lee | | Dawson, Mark Day, Brian Deen, Martin Duerst, David Durand, Lee | |
| | | | |
| skipping to change at line 3861 | | skipping to change at line 4256 | |
| Narten, Henrik Nielsen, Kenji Ota, Bob Parker, Glenn Peterson, Jon | | Narten, Henrik Nielsen, Kenji Ota, Bob Parker, Glenn Peterson, Jon | |
| Radoff, Saveen Reddy, Henry Sanders, Christopher Seiwald, Judith | | Radoff, Saveen Reddy, Henry Sanders, Christopher Seiwald, Judith | |
| Slein, Mike Spreitzer, Einar Stefferud, Greg Stein, Ralph Swick, | | Slein, Mike Spreitzer, Einar Stefferud, Greg Stein, Ralph Swick, | |
| Kenji Takahashi, Richard N. Taylor, Robert Thau, John Turner, Sankar | | Kenji Takahashi, Richard N. Taylor, Robert Thau, John Turner, Sankar | |
| Virdhagriswaran, Fabio Vitali, Gregory Woodhouse, and Lauren Wood. | | Virdhagriswaran, Fabio Vitali, Gregory Woodhouse, and Lauren Wood. | |
| | | | |
| Two from this list deserve special mention. The contributions by | | Two from this list deserve special mention. The contributions by | |
| Larry Masinter have been invaluable, both in helping the formation | | Larry Masinter have been invaluable, both in helping the formation | |
| of the working group and in patiently coaching the authors along the | | of the working group and in patiently coaching the authors along the | |
| way. In so many ways he has set high standards we have toiled to | | way. In so many ways he has set high standards we have toiled to | |
|
| | | | |
| Expires Dec 2002 77 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| meet. The contributions of Judith Slein in clarifying the | | meet. The contributions of Judith Slein in clarifying the | |
| requirements, and in patiently reviewing draft after draft, both | | requirements, and in patiently reviewing draft after draft, both | |
| improved this specification and expanded our minds on document | | improved this specification and expanded our minds on document | |
| management. | | management. | |
| | | | |
| We would also like to thank John Turner for developing the XML DTD. | | We would also like to thank John Turner for developing the XML DTD. | |
| | | | |
|
| Expires Dec 2002 78 WebDAV (RFC2518) bis June 2002 | | Valuable contributions to RFC2518 bis came from some already named. | |
| | | New contributors must also be gratefully acknowledged. Julian | |
| | | Reschke, Joel Soderberg, and Dan Brotsky hashed out specific text on | |
| | | the list or in meetings. Ilya Kirnos supplied text for Force- | |
| | | Authentication header. | |
| | | | |
|
| 21 References | | Expires Mar 2003 78 | |
| | | | |
|
| 21.1 Normative References | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
| | | 22 References | |
| | | | |
| | | 22.1 Normative References | |
| | | | |
| [RFC1766] H. T. Alvestrand, "Tags for the Identification of | | [RFC1766] H. T. Alvestrand, "Tags for the Identification of | |
|
| Languages." RFC 1766. Uninett. March, 1995. | | Languages." RFC 1766. Uninett. March 1995. | |
| | | | |
| [RFC2277] H. T. Alvestrand, "IETF Policy on Character Sets and | | [RFC2277] H. T. Alvestrand, "IETF Policy on Character Sets and | |
|
| Languages." RFC 2277, BCP 18. Uninett. January, 1998. | | Languages." RFC 2277, BCP 18, January 1998. | |
| | | | |
| [RFC2119] S. Bradner, "Key words for use in RFCs to Indicate | | [RFC2119] S. Bradner, "Key words for use in RFCs to Indicate | |
|
| Requirement Levels." RFC 2119, BCP 14. Harvard University. | | Requirement Levels." RFC 2119, BCP 14, March 1997. | |
| March, 1997. | | | |
| | | | |
| [RFC2396] T. Berners-Lee, R. Fielding, L. Masinter, "Uniform | | [RFC2396] T. Berners-Lee, R. Fielding, L. Masinter, "Uniform | |
|
| Resource Identifiers (URI): Generic Syntax." RFC 2396. | | Resource Identifiers (URI): Generic Syntax." RFC 2396, August | |
| MIT/LCS, U.C. Irvine, Xerox. August, 1998. | | 1998. | |
| | | | |
| [REC-XML]T. Bray, J. Paoli, C. M. Sperberg-McQueen, "Extensible | | [REC-XML]T. Bray, J. Paoli, C. M. Sperberg-McQueen, "Extensible | |
| Markup Language (XML)." World Wide Web Consortium | | Markup Language (XML)." World Wide Web Consortium | |
| Recommendation REC-xml-19980210. | | Recommendation REC-xml-19980210. | |
|
| http://www.w3.org/TR/1998/REC-xml-19980210. | | http://www.w3.org/TR/1998/REC-xml-19980210, February 1998. | |
| | | | |
| [REC-XML-NAMES] T. Bray, D. Hollander, A. Layman, "Name Spaces in | | [REC-XML-NAMES] T. Bray, D. Hollander, A. Layman, "Name Spaces in | |
| XML" World Wide Web Consortium Recommendation REC-xml-names. | | XML" World Wide Web Consortium Recommendation REC-xml-names. | |
|
| http://www.w3.org/TR/REC-xml-names-19990114/ | | http://www.w3.org/TR/REC-xml-names-19990114, January 1999. | |
| | | | |
| [RFC2069] J. Franks, P. Hallam-Baker, J. Hostetler, P. Leach, A. | | [RFC2069] J. Franks, P. Hallam-Baker, J. Hostetler, P. Leach, A. | |
| Luotonen, E. Sink, and L. Stewart. "An Extension to HTTP : | | Luotonen, E. Sink, and L. Stewart. "An Extension to HTTP : | |
|
| Digest Access Authentication" RFC 2069. Northwestern | | Digest Access Authentication" RFC 2069, January 1997. | |
| University, CERN, Spyglass Inc., Microsoft Corp., Netscape | | | |
| Communications Corp., Spyglass Inc., Open Market Inc. January | | | |
| 1997. | | | |
| | | | |
|
| [RFC2068] R. Fielding, J. Gettys, J. Mogul, H. Frystyk, T. | | [RFC2616] R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, | |
| Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1." RFC | | P. Leach, T. Berners-Lee, "Hypertext Transfer Protocol -- | |
| 2068. U.C. Irvine, DEC, MIT/LCS. January, 1997. | | HTTP/1.1." RFC 2616, June 1999. | |
| | | | |
|
| [ISO-639] ISO (International Organization for Standardization). | | [ISO-639] ISO (International Organization for Standardization). ISO | |
| ISO 639:1988. "Code for the representation of names of | | 639:1988. "Code for the representation of names of | |
| languages." | | languages." | |
| | | | |
|
| [ISO-8601] ISO (International Organization for Standardization). | | [ISO-8601] ISO (International Organization for Standardization). ISO | |
| ISO 8601:1988. "Data elements and interchange formats - | | 8601:1988. "Data elements and interchange formats - | |
| Information interchange - Representation of dates and times." | | Information interchange - Representation of dates and times." | |
| | | | |
|
| Expires Dec 2002 79 WebDAV (RFC2518) bis June 2002 | | | |
| | | | |
| [ISO-11578] ISO (International Organization for Standardization). | | [ISO-11578] ISO (International Organization for Standardization). | |
| ISO/IEC 11578:1996. "Information technology - Open Systems | | ISO/IEC 11578:1996. "Information technology - Open Systems | |
| Interconnection - Remote Procedure Call (RPC)" | | Interconnection - Remote Procedure Call (RPC)" | |
| | | | |
|
| [RFC2141] R. Moats, "URN Syntax." RFC 2141. AT&T. May, 1997. | | [RFC2141] R. Moats, "URN Syntax." RFC 2141, May 1997. | |
| | | | |
|
| [UTF-8] F. Yergeau, "UTF-8, a transformation format of Unicode | | Expires Mar 2003 79 | |
| and ISO 10646." RFC 2279. Alis Technologies. January, 1998. | | | |
| | | | |
|
| 21.2 Informational References | | WebDAV (RFC2518) bis September 2002 | |
| | | | |
|
| [RFC2026] S. Bradner, "The Internet Standards Process - Revision | | [RFC3339] G. Klyne, C. Newman, ôDate and Time on the Internet: | |
| 3." RFC 2026, BCP 9. Harvard University. October, 1996. | | Timestamps.ö RFC3339, July 2002. | |
| | | | |
|
| [RFC1807] R. Lasher, D. Cohen, "A Format for Bibliographic | | [UTF-8] F. Yergeau, "UTF-8, a transformation format of Unicode and | |
| Records," RFC 1807. Stanford, Myricom. June, 1995. | | ISO 10646." RFC 2279, January 1998. | |
| | | | |
| | | 22.2 Informational References | |
| | | | |
| | | [RFC2026] S. Bradner, "The Internet Standards Process - Revision 3." | |
| | | RFC 2026, BCP 9, October 1996. | |
| | | | |
| | | [RFC1807] R. Lasher, D. Cohen, "A Format for Bibliographic Records," | |
| | | RFC 1807, June 1995. | |
| | | | |
| [WF] C. Lagoze, "The Warwick Framework: A Container Architecture | | [WF] C. Lagoze, "The Warwick Framework: A Container Architecture | |