mirror of
https://github.com/nginx/nginx.git
synced 2025-01-19 01:42:58 +08:00
$cookie_... variable
This commit is contained in:
parent
038a9201e6
commit
c8b40a2401
@ -488,6 +488,15 @@ ngx_http_get_variable(ngx_http_request_t *r, ngx_str_t *name, ngx_uint_t key,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (ngx_strncmp(name->data, "cookie_", 7) == 0) {
|
||||
|
||||
if (ngx_http_variable_argument(r, vv, (uintptr_t) name) == NGX_OK) {
|
||||
return vv;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (ngx_strncmp(name->data, "arg_", 4) == 0) {
|
||||
|
||||
if (ngx_http_variable_argument(r, vv, (uintptr_t) name) == NGX_OK) {
|
||||
@ -727,6 +736,34 @@ ngx_http_variable_unknown_header(ngx_http_variable_value_t *v, ngx_str_t *var,
|
||||
}
|
||||
|
||||
|
||||
static ngx_int_t
|
||||
ngx_http_variable_cookie(ngx_http_request_t *r, ngx_http_variable_value_t *v,
|
||||
uintptr_t data)
|
||||
{
|
||||
ngx_str_t *name = (ngx_str_t *) data;
|
||||
|
||||
ngx_str_t cookie, s;
|
||||
|
||||
s.len = name->len - (sizeof("cookie_") - 1);
|
||||
s.data = name->data + sizeof("cookie_") - 1;
|
||||
|
||||
if (ngx_http_parse_multi_header_lines(&r->headers_in.cookies, &s, &cookie)
|
||||
== NGX_DECLINED)
|
||||
{
|
||||
v->not_found = 1;
|
||||
return NGX_OK;
|
||||
}
|
||||
|
||||
v->len = cookie.len;
|
||||
v->valid = 1;
|
||||
v->no_cacheable = 0;
|
||||
v->not_found = 0;
|
||||
v->data = cookie.data;
|
||||
|
||||
return NGX_OK;
|
||||
}
|
||||
|
||||
|
||||
static ngx_int_t
|
||||
ngx_http_variable_argument(ngx_http_request_t *r, ngx_http_variable_value_t *v,
|
||||
uintptr_t data)
|
||||
@ -1544,6 +1581,13 @@ ngx_http_variables_init_vars(ngx_conf_t *cf)
|
||||
continue;
|
||||
}
|
||||
|
||||
if (ngx_strncmp(v[i].name.data, "cookie_", 7) == 0) {
|
||||
v[i].get_handler = ngx_http_variable_cookie;
|
||||
v[i].data = (uintptr_t) &v[i].name;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (ngx_strncmp(v[i].name.data, "arg_", 4) == 0) {
|
||||
v[i].get_handler = ngx_http_variable_argument;
|
||||
v[i].data = (uintptr_t) &v[i].name;
|
||||
|
Loading…
Reference in New Issue
Block a user