On Fri, Mar 04, 2011 at 08:25:46PM +0530, shirish deshpande wrote:
> Am developing an nginx module. I get multiple cookies in a http
> request. I need to extract individual cookie from the multiple cookies
> that I get. How do I achive this?
> Is there an api to extract individual cookie?
See ngx_http_userid_module.c for examples.
> >From what I understand:
> + The cookies are present in request->headers_in as array
> cookies == request->headers_in->cookies
Yes (incorrect syntax, but doesn't really matter).
> + The length of this array is 1, even when we get multiple cookies.
No. This won't be 1 as long as you get multiple headers from
> + Further investigation reveals that the element is a hash.
> cookies->elts is a hash.
> key is cookie
> value is all cookies
> key -> cookie
> value -> "cookie1=value1;cookie2=value2;cookie3=value3"
This is header and it's value.
> + So will I need to parse the cookie string in "value" to extract
> individual cookies?
> Or is there a api that will help in extract individual cookies.
The ngx_http_parse_multi_header_lines() is a api to extract
> + I cannot use ngx_http_parse_multi_header_lines() as I may not always
> know the name of the cookie (the cookie name may vary depending on
If you don't know id, you don't need an api to extract individual
cookies. Guess you want to iterate all cookies, right?
There is no such api, though iterating over r->headers_in.cookies
and parsing values should do the trick. Refer to
ngx_http_parse_multi_header_lines() implementation for an example.