解説
- 基本的にmoduleのhandlerに渡されるngx_http_request_t構造体のバッファに入っている。
req->headers_in.cookies
- ただ、cookiesがngx_array_tというリスト形式のバッファで実際どのような形でデータが入っているのかよくわからない。
- cookiesを設定している処理(ngx_http_request.c内)を見てみると、
if (ngx_array_init(&r->headers_in.cookies, r->pool, 2, sizeof(ngx_table_elt_t *)) != NGX_OK)
{
ngx_http_close_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
return;
}
- となってる。バッファの形式はngx_table_elt_t構造体だろう。
typedef struct {
ngx_uint_t hash;
ngx_str_t key;
ngx_str_t value;
u_char *lowcase_key;
} ngx_table_elt_t;
- key-valueハッシュかな?
- ngx_http_parse_multi_header_lines()という関数を使えば簡単に取り出せた。
ngx_str_t cookie, s;
s.len = 3;
s.data = "ip";
if(ngx_http_parse_multi_header_lines(&(req->headers_in.cookies), &s, &cookie) == NGX_DECLINED)
{
return(0);
}
- これでipというcookieの値がcookieに設定されていた。