[New-bugs-announce] [issue10155] Add fixups for encoding problems to wsgiref
report at bugs.python.org
Wed Oct 20 18:23:42 CEST 2010
New submission from And Clover <and at doxdesk.com>:
Currently wsgiref's CGIHandler makes a WSGI environ from the CGI environ without changes.
Unfortunately the CGI environ is wrong in a number of common circumstances:
- on Windows, the native environ is Unicode, and different servers choose different decodings for HTTP bytes to store in the environ (most notably for PATH_INFO);
- on Windows with Python 2.x, os.environ is read from the Unicode native environ using the ANSI encoding, which will lose/mangle non-ASCII characters;
- on Posix with Python 3.x, os.environ is read from a native bytes environ using the filesystemencoding which is probably not ISO-8859-1.
- on IIS, PATH_INFO inappropriately includes SCRIPT_NAME unless a hidden, rarely-used, and problematic config option is applied.
Previously, it was not clear in PEP 333 what was supposed to happen with headers and encodings, especially under Python 3. PEP 3333 clears this up. These patches add fixups to wsgiref to try to generate the nearest to a 'correct' environ as per PEP 3333 as possible for the current platform and server software.
They also fix simple_server to use the correct encoding for PATH_INFO, and include the fix for issue 9022, correspondingly updating the simple_server demo app and tests to conform to PEP 3333's expectation that headers will be ISO-8859-1-decoded Unicode strings. The test_bytes_validation test is removed: as I understand it, it's no long allowed to use byte string headers/status.
components: Library (Lib)
title: Add fixups for encoding problems to wsgiref
versions: Python 2.7, Python 3.2
Added file: http://bugs.python.org/file19303/wsgiref-patches-3.2a3.patch
Python tracker <report at bugs.python.org>
More information about the New-bugs-announce