[Zope-dev] Curious about age old WebDAV decisions...

Zachery Bir zbir at urbanape.com
Wed Dec 28 14:27:59 EST 2005


I've got a Folder (indirection) and a DTML Method (found) in the root  
of a Zope site. HEAD requests fail on the indirected DTML Method due  
to OFS.ObjectManager's __getitem__ method:

     def __getitem__(self, key):
         import pdb;pdb.set_trace()
         v=self._getOb(key, None)
         if v is not None: return v
         if hasattr(self, 'REQUEST'):
             request=self.REQUEST
             method=request.get('REQUEST_METHOD', 'GET')
             if request.maybe_webdav_client and not method in ('GET',  
'POST'):
                 return NullResource(self, key, request).__of__(self)
         raise KeyError, key

I wasn't around during the development of the WebDAV code, so I'm  
loathe to just jump in and start changing things, but why isn't  
'HEAD' exempted from the NullResource as well, given that HTTP specs  
state that HEAD *must* return the same headers that a GET would  
provide (ignoring for the moment the Collector issue thread over  
whether HEAD should provide the length of the source of a document or  
its fully rendered content - let's just try to make sure both methods  
work on the *same object*). What was the reasoning behind the  
decision? These changes happened way back in the Dark Ages (late  
March 1999 or so, earlier in the month, this code was added to  
OFS.Folder with the initial WebDAV support). A trip through the  
WayBackMachine™ shows no discussion in the Zope-dev lists in early  
1999 when this was being worked on, and no real mention of WebDAV in  
Zope for most of the rest of that year (on Zope-dev or the general  
Zope list). Am I mistaking this for a problem?

   ~
   zbir at gorilla $ curl http://localhost:2277/found
   hello~
   zbir at gorilla $ curl http://localhost:2277/indirection/found
   hello~
   zbir at gorilla $ curl -I http://localhost:2277/found
   HTTP/1.1 200 OK
   Server: Apache
   Date: Wed, 28 Dec 2005 18:59:58 GMT
   Last-Modified: Wed, 28 Dec 2005 18:54:07 GMT
   Accept-Ranges: none
   Content-Type: text/html
   Content-Length: 5

   ~
   zbir at gorilla $ curl -I http://localhost:2277/indirection/found
   HTTP/1.1 404 Not Found
   Server: Apache
   Date: Wed, 28 Dec 2005 19:00:10 GMT
   Bobo-Exception-Line: 63
   Content-Length: 891
   Bobo-Exception-Value: See the server error log for details
   Content-Type: text/html
   Accept-Ranges: none
   Bobo-Exception-File: NullResource.py
   Bobo-Exception-Type: NotFound

Thanks,

Zac



More information about the Zope-Dev mailing list