apache Как использовать набор заголовков Set-Cookie expires=‹date› динамически

Я использую apache в качестве балансировщика нагрузки и обратного прокси. Для прилипания сеанса я создаю файл cookie с маршрутом узла.

Header set Set-Cookie "h=.%{BALANCER_WORKER_ROUTE}e; path=/; domain=.domain.com" env=BALANCER_ROUTE_CHANGED

Как установить значение expires в файле cookie равным X минутам с момента поступления запроса?

Документация для mod_headers даже не описывает подробно Set-Cookie, поэтому там нет информации о динамический синтаксис для использования для expires.

Я попытался установить max-age, но, к сожалению, max-age не работает с IE 11 и многими наших клиентов используют его.

Документация для mod_rewrite cookie описывает, как установить время жизни в файле cookie, чтобы я мог заставить его работать, используя этот уродливый хак mod_rewrite, но мне пришлось использовать одно правило для каждого маршрута, так как оно не работало в моем разделе <Proxy balancer://my_cluster>:

RewriteCond %{HTTP_COOKIE} h=.1 [NC]
RewriteRule . -  [CO=h:.1:.domain.com:30:/]
RewriteCond %{HTTP_COOKIE} h=.2 [NC]
RewriteRule . -  [CO=h:.2:.domain.com:30:/]
RewriteCond %{HTTP_COOKIE} h=.3 [NC]
RewriteRule . -  [CO=h:.3:.domain.com:30:/]
RewriteCond %{HTTP_COOKIE} h=.4 [NC]
RewriteRule . -  [CO=h:.4:.domain.com:30:/]
RewriteCond %{HTTP_COOKIE} h=.5 [NC]
RewriteRule . -  [CO=h:.5:.domain.com:30:/]
RewriteCond %{HTTP_COOKIE} h=.6 [NC]
RewriteRule . -  [CO=h:.6:.domain.com:30:/]
RewriteCond %{HTTP_COOKIE} h=.7 [NC]
RewriteRule . -  [CO=h:.7:.domain.com:30:/]
RewriteCond %{HTTP_COOKIE} h=.8 [NC]
RewriteRule . -  [CO=h:.8:.domain.com:30:/]

Любые идеи о том, как выполнить с Header set Set-Cookie? Спасибо!


person DavidG    schedule 09.04.2015    source источник


Ответы (2)


Может быть, вы могли бы сохранить свою идею с помощью общего правила

RewriteCond %{HTTP_COOKIE} h=\.([1-8]) [NC]
RewriteRule . - [CO=h:.%1:.domain.com:30:/]
person Justin Iurman    schedule 14.04.2015
comment
+1 Спасибо за правило. Я не стал больше копаться в том, чтобы сделать эту часть общей, потому что я хочу сделать это с помощью Header set Set-Cookie, иначе я устанавливаю файл cookie без тайм-аута сразу после его перезаписи. Это то, что я использую на данный момент. - person DavidG; 16.04.2015
comment
Я не знаю другого способа сделать это, кроме как с Header и этим кодом. Есть ли особая причина, по которой вы хотите добиться этого только с помощью Header ? Лично я бы сделал так, как ответил. Может быть, вы могли бы описать, каков контекст и почему вы должны это сделать, тогда мы могли бы увидеть, существует ли лучший вариант. - person Justin Iurman; 21.04.2015
comment
Просто потому, что я устанавливаю файл cookie, а затем перезаписываю его. Это кажется довольно расточительным. - person DavidG; 21.04.2015

Я просмотрел файлы cookie на сайтах PayPal и обнаружил, что они устанавливают время для файлов cookie на прошлый год - (01 -01-1970). Причиной этого может быть прекращение повторного использования файлов cookie.

person AKV    schedule 22.07.2016