- From: Greg Stein <gstein@lyra.org>
- Date: Tue, 8 Feb 2000 19:00:00 -0800 (PST)
- To: rickard.falk@excosoft.se
- cc: w3c-dist-auth@w3.org
Let's assume that during your initial get, the server returns an ETag header such as: ETag: "abc" When you lock the resource, you can send back something like: If-Match: "abc" If the document has changed, then the ETag should have changed and the server will return 412 (Precondition Failed). Alternatively, you can use WebDAV's If: header like so: If: (["abc"]) You should also receive a 412 (Precondition Failed) in case the ETag no longer matches. And to be explicit: you *can* send the If: or If-*: headers with your LOCK method. By definition, a WebDAV server MUST support the If: header. I can't really determine whether an HTTP server MUST/MAY/SHOULD support the If-Match: header... the language is awfully complex the HTTP spec :-) Cheers, -g ps. fyi: for the mod_dav case, Apache handles If-Match: and providing the ETag: header. mod_dav handles the If: header. On Tue, 8 Feb 2000 rickard.falk@excosoft.se wrote: > Ok... But the real issue is if I can make sure that the Lock command tells me, > if I'm trying to lock something that has been updated. There is nothing in the > webdav spec. that specifies this behaviour, right? Can I even rely on that if I > send the E-tag, that the server is supporting this behavour on a Lock command? > ( this maybe applies to some other commands to... ) > If the resource is changed, what reply can I expect from the server? > > /Rickard > > > > > I would like to voice *very* strong support for Greg's suggestion. In > > the presence of versioning, date comparisons such as "Last-Modified" > > or "If-Unmodified-Since" do not provide you with reliable information > > about the accuracy of what you have in your cache. In particular, if > > an older revision is made the default revision of a versioned > > resource, it will have an older date, but your cache should be updated > > with that older value. > > > > So ETag values should be the only ones you use to verify that you are > > seeing the current value of a resource. > > > > Cheers, > > Geoff > > > > Date: Tue, 8 Feb 2000 03:34:19 -0800 (PST) > > From: Greg Stein <gstein@lyra.org> > > > > On Tue, 8 Feb 2000, Rickard Falk wrote: > > > I have another 'client side' related question. > > > When I'm issuing a Lock command, can I include the 'If-Unmodified-Since' > in > > > the header ( http standard parameter...)? > > > In our client a user can browse through allot of files, without having > them > > > locked. Then when he wants to edit the file, he then presses a lock > button. > > > But when he presses this button, the client must make sure that the file > > > that he has read, is the latest one. Today I'm doing a Lock, then a Head > > > command to se if the 'Last-Modified' parameter is changed since the Get. > It > > > would be much easier if I just could add the 'If-Unmodified-Since' in the > > > Lock request. > > > > You should be able to use If-Unmodified-Since (mod_dav will check for it). > > > > Note that you could also use ETag values to check for changes. I think the > > ETag is probably the Right Way to look for possible changes on the server. > > > > Cheers, > > -g > > > > -- > > Greg Stein, http://www.lyra.org/ > > > > > > -- Greg Stein, http://www.lyra.org/
Received on Tuesday, 8 February 2000 21:59:59 UTC