Issue 1170065: HTTPResponse.getheaders() returns lowercased header names (original) (raw)

I'm not sure, if this is a bug, or intentional behaviour, because on one hand RFC states that field names for HTTP headers are case-insensitive, on the other hand, it's not what server really returns to client.

Example:

print response.getheaders()

Yields this (output formatted a bit for clarity):

[('content-length', '5998'), ('accept-ranges', 'bytes'), ('last-modified', 'Sun, 30 Jan 2005 14:36:09 GMT'), ('connection', 'close'), ('etag', '"26d79-176e-41fcf0d9"'), ('date', 'Thu, 24 Mar 2005 18:14:07 GMT'), ('content-type', 'text/html')]

Logged In: YES user_id=539787

I believe that since HTTP Headers are not case sensitive, this is not a bug. Fixing the case to either lower-case or upper-case is typical wherever data are case insensitive, and since Python strings are case sensitive (in this case, the header name is being used as a key to a dict), rfc822.py selects lower-case ('suitably canonicalized') to implement case insensitivity.