2011年3月5日星期六

Re: Extract individual cookie from multiple cookies

Hello!

On Fri, Mar 04, 2011 at 08:25:46PM +0530, shirish deshpande wrote:

> Hi,
>
> 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?

ngx_http_parse_multi_header_lines()

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
client.

> + Further investigation reveals that the element is a hash.
>
> cookies->elts is a hash.
>
> key is cookie
> value is all cookies
> eg:
> 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
individual cookies.

> + 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
> id).

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.

Maxim Dounin

_______________________________________________
nginx mailing list
nginx@nginx.org
http://nginx.org/mailman/listinfo/nginx

没有评论:

发表评论