Welcome! Log In Create A New Profile

Advanced

Re: reading cookie value issue

Maxim Dounin
April 26, 2016 09:10AM
Hello!

On Tue, Apr 26, 2016 at 05:07:19PM +0530, Pankaj Chaudhary wrote:

> Hi,
>
> I have requirement to create own cookie based on input and wirte the that
> cookie in header.
> whenever i need that i can read from header and use it.
>
>
> for example:-
>
> I have created my own cookie "thissomevalue" worte in header and later the
> same read from header.
>
> Please check my code and let me know why i am not able to read the value
> from header.
>
> Below code snippet to set header value in request header:-
>
> ngx_table_elt_t *cookie;
> cookie = ngx_list_push(&r->headers_in.headers);
> cookie->lowcase_key = (u_char*) "cookie";
> ngx_str_set(&cookie->key, "Cookie");
> ngx_str_set(&cookie->value, "somevalue");
> cookie->hash = ngx_crc32_long(cookie->lowcase_key, cookie->key.len);

Note: you are not expected to modify request headers
(r->headers_in). Doing so will likely lead to segmentation
faults.

If you want to provide your own cookie for a backend server,
consider using proxy_set_header instead, see
http://nginx.org/r/proxy_set_header.

> Below code snippet to read set value from header:-
>
> ngx_http_core_main_conf_t *clcf;
> ngx_str_t *type;
> ngx_uint_t key;
> ngx_str_t val = ngx_string("cookie");
> clcf = ngx_http_get_module_main_conf(r, ngx_http_core_module);
> key= ngx_hash_key_lc(val.data, val.len);
> type = ngx_hash_find(&clcf->headers_in_hash, key, val.data, val.len);
>
> if (type != NULL)
> {
> ngx_table_elt_t *test_val;
> test_val= ngx_list_push(&r->headers_out.headers);
> test_val->lowcase_key = (u_char*) "test_val";
> ngx_str_set(&test_val->key, "Test_Val");
> ngx_str_set(&test_val->value, type->data);
> test_val->hash = ngx_crc32_long(test_val->lowcase_key, test_val->key.len);
> }

Structures stored in cmcf->headers_in_hash are ngx_http_header_t,
see ngx_http_headers_in[] array in src/http/ngx_http_request.c.
It is not expected to contain header value. In case of the Cookie
header, it's expected to contain the header name, function to
handle the header during reading request headers from a client,
and an offset of r->headers_in.cookie.

If you want to find out how to read a cookie as got from client,
consider looking at the ngx_http_variable_cookie() function in
src/http/ngx_http_variables.c.

--
Maxim Dounin
http://nginx.org/

_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

reading cookie value issue

pankajitbhu 511 April 26, 2016 07:38AM

Re: reading cookie value issue

Maxim Dounin 317 April 26, 2016 09:10AM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 192
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready