Multiple message-header fields handling

Igor Sysoev is at rambler-co.ru
Wed Oct 3 19:14:32 MSD 2007


On Wed, Oct 03, 2007 at 05:07:35PM +0200, Manlio Perillo wrote:

> 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
>    else:
>       # fold the header value
>       environ[key] = old + ", " + value
> 
> 
> This is not very efficient, if I have to do many strings concatenations.

Actually requests with multi line headers are seldom.

> >>>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.
> 
> http://kristol.org/cookie/errata.html

I still do not understand.
$http_cookie joins cookies using "; " without any processing, see
ngx_http_variable_headers().


-- 
Igor Sysoev
http://sysoev.ru/en/





More information about the nginx mailing list