[Zope-dev] Accept-Charset hearders causing 500 internal server
error.[correct but not lenient]
Juan David Ibáñez Palomar
j-david@noos.fr
Tue, 11 Feb 2003 12:03:03 +0100
The bug was fixed three weeks ago (branch-1-0), it is
time for a release I guess. Well, only the "strip()",
no "try/except" clause yet.
By the way, Localizer bugs/patches should be sent to
the Localizer mailing list or to the SourceForge tracker
of the LLEU project.
Romain Slootmaekers wrote:
> Romain Slootmaekers wrote:
> Hi,
> below the original post:
>
> it is a bug in Products/Localizer/Accept.py
>
> here's the code to fix it:
>
> #--- code fix starting from line 102 ---
>
>
> # Get the quality
> try:
> if len(x) == 2:
> quality = x[1] # Get the quality
> quality =quality.strip()
> quality = quality[2:] # Get the number (remove
> "q=")
> quality = float(quality) # Change it to float
> else:
> quality = 1.0
> except:
> quality=1.0
> #--- end of code fix ---
>
> I added a strip() and a try/except for other things that can go wrong.
>
> This way Nokia Wap surfers can access your site while Localizer is
> installed.
>
> have fun,
>
> Sloot.
>
> BTW, exceptions that originate here are not caught in the error_log.
> this is probably unintended as well.
>
>
> ----------------- original post -----------------------------
>
>> 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()
>>
>>
>>
>>
>> _______________________________________________
>> Zope-Dev maillist - Zope-Dev@zope.org
>> 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 - Zope-Dev@zope.org
> http://mail.zope.org/mailman/listinfo/zope-dev
> ** No cross posts or HTML encoding! **
> (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce
> http://mail.zope.org/mailman/listinfo/zope )
>
--
J. David Ibáñez, http://www.j-david.net
Software Engineer / Ingénieur Logiciel / Ingeniero de Software