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.
RFC 2518 WEBDAV February 1999
7.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 receives
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
=13= |