Multiple message-header fields handling

Manlio Perillo manlio_perillo at
Wed Oct 3 19:07:35 MSD 2007

Igor Sysoev ha scritto:
> On Wed, Oct 03, 2007 at 04:09:49PM +0200, Manlio Perillo wrote:
>> Igor Sysoev ha scritto:
>>> On Tue, Oct 02, 2007 at 10:02:38PM +0200, Manlio Perillo wrote:
>>>> I have found a "problem" with multiple message-header fields handling in 
>>>> Nginx.
>>> [...]
>>>> Igor, do you plan to add this feature in a future version?
>>> nginx does not join headers as Apache does.
>> Ok.
>>> However, all headers are passed to a proxied server/etc as is if they
>>> are not overwritten.
>> The problem is that a WSGI application receives the headers in a Python 
>> dictionary (an associative array).
>> This means that I MUST fold the headers.
> All headers are available in r->headers_in.headers list.

In fact I iterate over this list doing (pseudo Python code):

environ = {}
for key, value in r->headers_in.headers list:
   environ[key] = value

The problem is that I only save the last multi line header.

A solution is to do:

environ = {}
for key, value in r->headers_in.headers list:
    # check if this is a multiline header
    old = environ.get(key, None)
    if old is None:
       environ[key] = value
       # fold the header value
       environ[key] = old + ", " + value

This is not very efficient, if I have to do many strings concatenations.

>>> As to the cookies nginx treats them specially and $http_cookie includes
>>> all Cookie header fields.
>> Cookies are a mess.
>> Does nginx apply some for of preprocessing?
> I do not understand the question.

Thanks and regards   Manlio Perillo

More information about the nginx mailing list