Проблема с логированием заголовка, если подставлять туда cookie

Всем привет!
Возникла проблема не очень стандартная, в документации не нашел ответа(может я плохо искал, конечно)
Задача - писать заголовок x-my-token, и если таковой отсутствует, то брать его из cookie `x-my-token`
Дописываем в http.conf

map $http_x_my_token      $my_token {
        default           $http_x_my_token;
        ""                $cookie_x_my_token;
}

В формат логов докинем “my_token”: “$my_token”
Проверяем
curl -Lk http://localhost/go

в логе "my_token”: ““ - как и ожидалось
curl -Lk -H “X-My-Token: here-is-my-token” http://localhost/go
в логе "my_token”: “here-is-my-token“

curl -Lk -b “x-my-token=here-is-token” http://localhost/go
в логе "my_token”: ““
curl -Lk -b “x_my_token=here-is-token” http://localhost/go
в логе "my_token”: “here-is-token“

curl -Lk -b “X_My_Token=here-is-token” http://localhost/go

в логе "my_token”: “here-is-token“
Получается, для кук у нас регистр не играет роли, а вот преобразование дефиса в нижнее подчеркивание не происходит? если так, тогда как правильно подобрать переменную с кукой в случает отсуствия хедера? вроде как дефис нельзя использовать в именах переменных?

Всё верно, для значений Cookie никаких преобразований не происходти.

Если нужно извлечь какое-то нестандартное значение из заголовка Cookie, то можно попробовать сделать это регуляркой на $http_cookie.

1 Like