Как использовать hypen в именах файлов cookie для nginx?
Я хочу использовать новые префиксы cookie, которые еще не стандартизированы IETF. Это __Secure- а также __Host-,
Итак, давайте установим этот cookie (здесь заголовок, возвращаемый сервером):
Set-Cookie: "__Host-apple=yummy; Secure; HttpOnly; Path=/"
Я хочу получить доступ к этому cookie сейчас в nginx с $cookie- переменная. Поэтому для тестирования я использую модуль echo, чтобы показать мне значение cookie:
location = /wannaeat/ {
echo $cookie___Host-apple;
}
Однако nginx всегда показывает мне -apple, Кажется, использовать дефис (-) разделить переменную.
Потому что, когда я, например, назову печенье __Host_apple (и переменная nginx $cookie___Host_apple) nginx показывает мне значение правильно.
Я знаю, что мог бы использовать $http_cookie и использовать регулярное выражение, чтобы найти правильный файл cookie, но это невозможно, так как я хочу map значение cookie.
1 ответ
Прежде всего, map фактически поддерживает сопоставление с регулярными выражениями:
Исходные значения указываются в виде строк или регулярных выражений (0.9.6).
(Таким образом, вы, вероятно, должны быть хорошими, чтобы пойти!)
Тем не менее, ради обсуждения и комментариев, поскольку то, что вы пытаетесь использовать, еще не является стандартом, вам лучше зайти в их списки рассылки или еще много чего, и сказать им, что то, что они предлагают сделать, является действительно плохой идеей.,
Просто ради этого я зашел в менеджер файлов cookie в моем браузере, чтобы посмотреть на использование _ подчеркивание против - кратчайший тире. Подчеркивание активно используется, по крайней мере, на 90% сайтов / файлов cookie, тогда как использование тире в файлах cookie, вероятно, намного ниже 5%.
Причина по которой - недопустимо в именах переменных очень просто и так же стара, как день - потому что символ часто используется почти во всех языках программирования вместо знака минус (тире, минус, mdash: -−—). В свою очередь, согласно re_format(7) а также pcrepattern(3) этот сценарий также является частью широко используемых реализаций регулярных выражений, где подчеркивание всегда считается частью слова, а символ тире - нет.
Я предполагаю, что та же самая проблема повторится во многих других языках так же как с nginx.conf.