[Zope-dev] Accept-Charset hearders causing 500 internal server error.[correct but not lenient]

Florent Guillaume fg@nuxeo.com
30 Jan 2003 16:45:35 +0100


Ooops, typo in the list name :-)
---

To: romain@zzict.com
Cc: nuxeo-localizer@nongnu.org, zope-dev@zope.org
Subject: Re: [Zope-dev] Accept-Charset hearders causing 500 internal server error.[correct  but not lenient]
Date: 30 Jan 2003 16:38:20 +0100

That's actually a bug in Localizer. In Accept.py, the Root.parse method
is not flexible enough... I haven't time to fix it right away so someone
else feel free to do it...

Florent

In article <3E37D0B7.6040801@zzict.nl> you write:
> Hi,
> 
> We have problems with the Accept-Charset headers that are sent to the 
> zope server by some mobile phones:
> fi:
> 'Accept-Charset':'ISO-8859-1, US-ASCII, UTF-8; Q=0.8'
> 
> These cause a 500 internal server error. (Error Value: invalid literal 
> for float(): =0.8 )
> 
> I checked with the HTTP1.1 RFC26160 section 14.2 and the header seems 
> valid, but in fact isn't:
> there is a space between the semi-colon and the Q char (which shouldn't 
> be there acoording to the spec).
> 
> So, in principle, this is not a zope server bug, but an inflexibility.
> 
> I think the server should be a bit more lenient.
> a simple .strip() in the right place should do.
> 
> Could you guys fix this?
> 
> TIA,
> 
> Sloot.
> 
> 
> 
> 
> BTW, for completeness, I included a quick test program is included below 
> (causes a 500 on my zope 2.6.0) :
> 
> 
> 
> #--------------------- program illustrating the behavior -----------
> import httplib, urllib
> 
> def sendHTTP():
>      """
> 
>      """
>      headers = {'Accept':
>                 'application/vnd.wap.wmlc, 
> application/vnd.wap.wmlscriptc, application/vnd.wap.wbxml, 
> image/vnd.wap.wbmp, image/gif, application/*, text/html, 
> application/xhtml+xml, application/vnd.wap.wml+xml, text/css',
>                 'Accept-Charset':'ISO-8859-1, US-ASCII, UTF-8; Q=0.8'}#, 
> ISO-10646-UCS-2; Q=0.6'
>      conn = httplib.HTTPConnection("127.0.0.1:8080")
>      conn.request("GET", "/mobile/wap/games/",headers=headers)
>      response = conn.getresponse()
>      print response.status, response.reason
>      data = response.read()
>      print data
> 
>      conn.close()
> 
> sendHTTP()

-- 
Florent Guillaume, Nuxeo (Paris, France)
+33 1 40 33 79 87  http://nuxeo.com  mailto:fg@nuxeo.com