[Web-SIG] Why is response_headers a list instead of a dict?
Clark C. Evans
cce at clarkevans.com
Sun Dec 25 04:45:34 CET 2005
Why is response_headers a list instead of a dict?
>From RFC 2616 Section 4.2:
The order in which header fields with differing field names are
received is not significant. However, it is "good practice" to send
general-header fields first, followed by request-header or response-
header fields, and ending with the entity-header fields.
Multiple message-header fields with the same field-name MAY be
present in a message if and only if the entire field-value for that
header field is defined as a comma-separated list [i.e., #(values)].
It MUST be possible to combine the multiple header fields into one
"field-name: field-value" pair, without changing the semantics of
the message, by appending each subsequent field-value to the first,
each separated by a comma.
In other words: (a) order does not matter, (b) it is reasonable to
restrict a header field to a single (header_name, header_value) pair.
Indeed, according to the specification, a HTTP Proxy could re-arrange
headers and condense N headers of the same type by simply concatenating
their values with a comma.
I'm asking this because it is quite painful (and very much an unnecessary
pain) to work with headers in complex WSGI-based middleware applications.
More information about the Web-SIG