- From: Helge Hess <helge.hess@opengroupware.org>
- Date: Tue, 25 Nov 2003 16:47:49 +0100
- To: Geoffrey M Clemm <geoffrey.clemm@us.ibm.com>
- Cc: "'Webdav WG'" <w3c-dist-auth@w3c.org>
On 25.11.2003, at 16:32, Geoffrey M Clemm wrote: > There are 3 obvious alternatives to move one set of resources > to another location: > - MOVE (cheap, least likely to work) > - COPY/DELETE (more expensive, more likely to work) > - PUT*/DELETE (most expensive, most likely to work) > > So a client that cares about efficiency will try these three > methods in the above order, until one succeeds. So what use > would it be for a server to say "out of the namespace I process"? So that the client knows that he should continue with COPY. If the client has no read access to the resource to be moved (access is 403 Forbidden!), it doesn't make sense to continue?! On the other side you are right, the client will find out about that in the last option, GET - if this returns Forbidden, we know that it is really an access issue. > The client will try the next method in either case. Well, if the server says that access to the resource is forbidden, I as the client, would not try the next method. > So is there anything that a server can do to expedite this > sequence? The only thing I can think of is to have the > server have a special error code for MOVE that says "don't try to fake > MOVE with COPY or PUT*, because I know those will also fail" > and a special code for COPY that says "don't try to fake copy > with PUT*, because I know that will also fail". Well, this is 403 (Access) Forbidden ;-) Using that access status code to signal some technically completely different issue (the resource cannot be moved on the server side due to operational restrictions) seems a bit weird to me. But if I'm supposed to do it that way, I do. BTW: another status which might be somewhat appropriate from the semantics is 501, Not Implemented. But this probably implies in the client that the whole method is not implemented which isn't what we want either. > But I think the likelihood that the MOVE or COPY implementation > will know this is small, and the benefit of skipping those > attempts is also small, so the overall benefit is very small. Well, I think that this is the common case. MOVE will usually map the URI to some internal storage URL, eg /publicstorage/image.gif to mod_dav /image.gif /dynamicservice/GroupwareFolder/ to servlet /GroupwareFolder and this mapping process will know whether source and target are going to be processed by the same service. Anyway, no intention to start a huge discussion on that. If there is no other way, I simply return 403 - I just wanted to make sure that I'm not missing something in the WebDAV spec. regards, Helge -- I'm describing in a paragraph what took 14 hours to figure out. You may want to sniff glue for a while, then reread this when you get out of rehab. [aLa]
Received on Tuesday, 25 November 2003 10:54:14 UTC