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

Romain Slootmaekers romain@zzict.com
Wed, 29 Jan 2003 14:01:43 +0100


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()