Я пытаюсь выяснить, как разрешить бэкэнду видеть файлы cookie отслеживания на определенных страницах регистрации, но игнорировать их на других. В настоящее время я пытаюсь использовать настраиваемый заголовок, отправляемый из серверной части в set beresp.ttl = 0s;
внутри vcl_fetch
:
if (beresp.http.cache-control ~ "max-age=-30") {
set beresp.ttl = 0s;
}
Но страницы регистрации по-прежнему не позволяют серверной части читать cookie.
в vcl_recv
Я удаляю их таким методом:
set req.http.Cookie =
regsuball(req.http.Cookie, "(^|;\s*)(__[a-z]+|_ga|_mkto_trk)=[^;]*", "");
set req.http.Cookie = regsub(req.http.Cookie, "^;\s*", "");
if (req.http.Cookie ~ "^\s*$") {
unset req.http.Cookie;
}
Как я могу позволить файлу cookie считываться на сервере на этих конкретных страницах? Я предполагаю, что мне нужно создать исключения в vcl_recv
?
Да - нужно «вернуть (пропустить)»; по запросам в бэкэнде. vcl_fetch запускается только при «выборке» элемента из бэкэнда - если элемент уже хранится в кеше, varnish не будет запускать код выборки.