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