⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfc2518.txt

📁 中、英文RFC文档大全打包下载完全版 .
💻 TXT
📖 第 1 页 / 共 5 页
字号:
7.2 Write Locks and Lock Tokens   A successful request for an exclusive or shared write lock MUST   result in the generation of a unique lock token associated with the   requesting principal.  Thus if five principals have a shared write   lock on the same resource there will be five lock tokens, one for   each principal.7.3 Write Locks and Properties   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   change, even while locked, due to the requirements of their schemas.Goland, et al.              Standards Track                    [Page 20]RFC 2518                         WEBDAV                    February 1999   Only dead properties and live properties defined to respect locks are   guaranteed not to change while write locked.7.4 Write Locks and Null Resources   It is possible to assert a write lock on a null resource in order to   lock the name.   A write locked null resource, referred to as a lock-null resource,   MUST respond with a 404 (Not Found) or 405 (Method Not Allowed) to   any HTTP/1.1 or DAV methods except for PUT, MKCOL, OPTIONS, PROPFIND,   LOCK, and UNLOCK.  A lock-null resource MUST appear as a member of   its parent collection.  Additionally the lock-null resource MUST have   defined on it all mandatory DAV properties.  Most of these   properties, such as all the get* properties, will have no value as a   lock-null resource does not support the GET method.  Lock-Null   resources MUST have defined values for lockdiscovery and   supportedlock properties.   Until a method such as PUT or MKCOL is successfully executed on the   lock-null resource the resource MUST stay in the lock-null state.   However, once a PUT or MKCOL is successfully executed on a lock-null   resource the resource ceases to be in the lock-null state.   If the resource is unlocked, for any reason, without a PUT, MKCOL, or   similar method having been successfully executed upon it then the   resource MUST return to the null state.7.5 Write Locks and Collections   A write lock on a collection, whether created by a "Depth: 0" or   "Depth: infinity" lock request, prevents the addition or removal of   member URIs of the collection by non-lock owners.  As a consequence,   when a principal issues a PUT or POST request to create a new   resource under a URI which needs to be an internal member of a write   locked collection to maintain HTTP namespace consistency, or issues 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   fail if the principal does not have a write lock on the collection.   However, if a write lock request is issued to a collection containing   member URIs identifying resources that are currently locked in a   manner which conflicts with the write lock, the request MUST fail   with a 423 (Locked) status code.   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 MUST   be automatically added to the lock.  This is the only mechanism thatGoland, et al.              Standards Track                    [Page 21]RFC 2518                         WEBDAV                    February 1999   allows a resource to be added to a write lock.  Thus, for example, if   the collection /a/b/ is write locked and the resource /c is moved to   /a/b/c then resource /a/b/c will be added to the write lock.7.6 Write Locks and the If Request Header   If a user agent is not required to have knowledge about a lock when   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   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   resource.  In this scenario, the PUT succeeds because locks are   associated with a principal, not a program, and thus program B,   because it is acting with principal A's credential, is allowed to   perform the PUT.  However, had program B known about the lock, it   would not have overwritten the resource, preferring instead to   present a dialog box describing the conflict to the user.  Due to   this scenario, a mechanism is needed to prevent different programs   from accidentally ignoring locks taken out by other programs with the   same authorization.   In order to prevent these collisions a lock token MUST be submitted   by an authorized principal in the If header for all locked resources   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   destination are locked then two lock tokens must be submitted, one   for the source and the other for the destination.7.6.1 Example - Write Lock   >>Request   COPY /~fielding/index.html HTTP/1.1   Host: www.ics.uci.edu   Destination: http://www.ics.uci.edu/users/f/fielding/index.html   If: <http://www.ics.uci.edu/users/f/fielding/index.html>       (<opaquelocktoken:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>)   >>Response   HTTP/1.1 204 No Content   In this example, even though both the source and destination are   locked, only one lock token must be submitted, for the lock on the   destination.  This is because the source resource is not modified by   a COPY, and hence unaffected by the write lock. In this example, user   agent authentication has previously occurred via a mechanism outside   the scope of the HTTP protocol, in the underlying transport layer.Goland, et al.              Standards Track                    [Page 22]RFC 2518                         WEBDAV                    February 19997.7 Write Locks and COPY/MOVE   A COPY method invocation MUST NOT duplicate any write locks active on   the source.  However, as previously noted, if the COPY copies the   resource into a collection that is locked with "Depth: infinity",   then the resource will be added to the lock.   A successful MOVE request on a write locked resource MUST NOT move   the write lock with the resource. However, the resource is subject to   being added to an existing lock at the destination, as specified in   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 namespace tree   covered by the lock), the moved resource will again 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 for both the source   and destination.7.8 Refreshing Write Locks   A client MUST NOT submit the same write lock request twice.  Note   that a client is always aware it is resubmitting the same lock   request because it must include the lock token in the If header in   order to make the request for a resource that is already locked.   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   lock.  Meaning, at minimum, that any timers associated with the lock   MUST be re-set.   A server may return a Timeout header with a lock refresh that is   different than the Timeout header returned when the lock was   originally requested.  Additionally clients may submit Timeout   headers of arbitrary value with their lock refresh requests.   Servers, as always, may ignore Timeout headers submitted by the   client.   If an error is received in response to a refresh LOCK request the   client SHOULD assume that the lock was not refreshed.8  HTTP Methods for Distributed Authoring   The following new HTTP methods use XML as a request and response   format.  All DAV compliant clients and resources MUST use XML parsers   that are compliant with [REC-XML].  All XML used in either requests   or responses MUST be, at minimum, well formed.  If a server receivesGoland, et al.              Standards Track                    [Page 23]RFC 2518                         WEBDAV                    February 1999   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.8.1 PROPFIND   The PROPFIND method retrieves properties defined on the resource   identified by the Request-URI, if the resource does not have any   internal members, or on the resource identified by the Request-URI   and potentially its member resources, if the resource is a collection   that has internal member URIs.  All DAV compliant resources MUST   support the PROPFIND method and the propfind XML element (section   12.14) along with all XML elements defined for use with that element.   A client may submit a Depth header with a value of "0", "1", or   "infinity" with a PROPFIND on a collection resource with internal   member URIs.  DAV compliant servers MUST support the "0", "1" and   "infinity" behaviors. By default, the PROPFIND method without a Depth   header MUST act as if a "Depth: infinity" header was included.   A client may submit a propfind XML element in the body of the request   method describing what information is being requested.  It is   possible to request particular property values, all property values,   or a list of the names of the resource's properties.  A client may   choose not to submit a request body.  An empty PROPFIND request body   MUST be treated as a request for the names and values of all   properties.   All servers MUST support returning a response of content type   text/xml or application/xml that contains a multistatus XML element   that describes the results of the attempts to retrieve the various   properties.   If there is an error retrieving a property then a proper error 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 noted, if the   response uses a multistatus XML element, with a response XML element   which contains a 404 (Not Found) status value.   Consequently, the multistatus XML element for a collection resource   with member URIs MUST include a response XML element for each member   URI of the collection, to whatever depth was requested. Each 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 are   defined.  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.Goland, et al.              Standards Track                    [Page 24]RFC 2518                         WEBDAV                    February 1999   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.8.1.1 Example - Retrieving Named Properties   >>Request   PROPFIND  /file HTTP/1.1   Host: www.foo.bar   Content-type: text/xml; charset="utf-8"   Content-Length: xxxx   <?xml version="1.0" encoding="utf-8" ?>   <D:propfind xmlns:D="DAV:">     <D:prop xmlns:R="http://www.foo.bar/boxschema/">          <R:bigbox/>          <R:author/>          <R:DingALing/>          <R:Random/>     </D:prop>   </D:propfind>   >>Response   HTTP/1.1 207 Multi-Status   Content-Ty

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -