Re: [Zope-dev] DAV collections, index_html, and HEAD

2002-06-06 Thread Andreas Jung

Can you file a collector issue please?

-aj
- Original Message -
From: "Karl Anderson" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, June 06, 2002 19:44
Subject: [Zope-dev] DAV collections, index_html, and HEAD


>
> Objects that inherit from Folder (and therefore from Collection) and
> also have an index_html that's a Python method (or othewise
> nonvanilla, presumably) return a 405 (Method Not Allowed) for HTTP
> HEAD requests.
>
> Zope 2.5.1 raises on line 57 of Collection.py.  The object raises if
> its index_html member doesn't have a HEAD attribute.
>
> Surely it's a bug to only give HEAD for objects that return an
> index_html via hasattr/getattr.  What about getitem,
> __bobo_traverse__, and __call__?  Shouldn't we find the object to HEAD
> via ZPublisher?  And aren't we bypassing the access control checks,
> anyway?
>
> Would it be a good idea to try and make up a HEAD response for
> arbitrary attributes that don't support it (such as Python methods)?
> Perhaps by publishing them internally, and picking whatever we can
> from RESPONSE, computing Content-Length from the returned stream if
> necessary?  It's inefficient, but at least it's cache-friendly... and
> better for tools (er, linbot) that assume that if it can't be found
> via HEAD, it isn't there.
>
> Excerpt from Collection.HEAD():
>
> # Note that we are willing to acquire the default document
> # here because what we really care about is whether doing
> # a GET on this collection / would yield a 200 response.
> if hasattr(self, 'index_html'):
> if hasattr(self.index_html, 'HEAD'):
> return self.index_html.HEAD(REQUEST, RESPONSE)
> raise 'Method Not Allowed', (
>   'Method not supported for this resource.'
>   )
> raise 'Not Found', 'The requested resource does not exist.'
>
>
>
>
>
> persephone ~/tmp= telnet viii.dclxvi.org 80
> Trying 206.163.69.253...
> Connected to viii.dclxvi.org.
> Escape character is '^]'.
> HEAD /blog HTTP/1.0
> HEAD /blog HTTP/1.0
>
>
> HTTP/1.1 405 Method Not Allowed
> Date: Thu, 06 Jun 2002 02:22:40 GMT
> Server: Apache/1.3.12 (Unix) mod_ssl/2.6.6 OpenSSL/0.9.5a
> Bobo-Exception-File: /usr/local/zope/2-5-1/lib/python/webdav/Collection.py
> Bobo-Exception-Line: 57
> Bobo-Exception-Type: Method Not Allowed
> Bobo-Exception-Value: bobo exception
> Connection: close
> Content-Location: http://viii.dclxvi.org/blog/
> Ms-Author-Via: DAV
> X-Powered-By: Zope (www.zope.org), Python (www.python.org)
> Content-Length: 2106
> Content-Type: text/html
>
>
> --
> Karl Anderson  [EMAIL PROTECTED]   http://www.monkey.org/~kra/
>
>
> ___
> Zope-Dev maillist  -  [EMAIL PROTECTED]
> http://lists.zope.org/mailman/listinfo/zope-dev
> **  No cross posts or HTML encoding!  **
> (Related lists -
>  http://lists.zope.org/mailman/listinfo/zope-announce
>  http://lists.zope.org/mailman/listinfo/zope )
>



___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )



[Zope-dev] DAV collections, index_html, and HEAD

2002-06-06 Thread Karl Anderson


Objects that inherit from Folder (and therefore from Collection) and
also have an index_html that's a Python method (or othewise
nonvanilla, presumably) return a 405 (Method Not Allowed) for HTTP
HEAD requests.

Zope 2.5.1 raises on line 57 of Collection.py.  The object raises if
its index_html member doesn't have a HEAD attribute.

Surely it's a bug to only give HEAD for objects that return an
index_html via hasattr/getattr.  What about getitem,
__bobo_traverse__, and __call__?  Shouldn't we find the object to HEAD
via ZPublisher?  And aren't we bypassing the access control checks,
anyway?

Would it be a good idea to try and make up a HEAD response for
arbitrary attributes that don't support it (such as Python methods)?
Perhaps by publishing them internally, and picking whatever we can
from RESPONSE, computing Content-Length from the returned stream if
necessary?  It's inefficient, but at least it's cache-friendly... and
better for tools (er, linbot) that assume that if it can't be found
via HEAD, it isn't there.

Excerpt from Collection.HEAD():

# Note that we are willing to acquire the default document
# here because what we really care about is whether doing
# a GET on this collection / would yield a 200 response.
if hasattr(self, 'index_html'):
if hasattr(self.index_html, 'HEAD'):
return self.index_html.HEAD(REQUEST, RESPONSE)
raise 'Method Not Allowed', (
  'Method not supported for this resource.'
  )
raise 'Not Found', 'The requested resource does not exist.'





persephone ~/tmp= telnet viii.dclxvi.org 80
Trying 206.163.69.253...
Connected to viii.dclxvi.org.
Escape character is '^]'.
HEAD /blog HTTP/1.0
HEAD /blog HTTP/1.0


HTTP/1.1 405 Method Not Allowed
Date: Thu, 06 Jun 2002 02:22:40 GMT
Server: Apache/1.3.12 (Unix) mod_ssl/2.6.6 OpenSSL/0.9.5a
Bobo-Exception-File: /usr/local/zope/2-5-1/lib/python/webdav/Collection.py
Bobo-Exception-Line: 57
Bobo-Exception-Type: Method Not Allowed
Bobo-Exception-Value: bobo exception
Connection: close
Content-Location: http://viii.dclxvi.org/blog/
Ms-Author-Via: DAV
X-Powered-By: Zope (www.zope.org), Python (www.python.org)
Content-Length: 2106
Content-Type: text/html


-- 
Karl Anderson  [EMAIL PROTECTED]   http://www.monkey.org/~kra/


___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )