2015-04-09 3 views
10

Я использую apache как балансировщик нагрузки и обратный прокси. Для липкости сессии Я создаю файл cookie с маршрутом узла.apache Как использовать «Header set Set-Cookie expires = <date>» динамически

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

Как установить значение expires в куки быть X минут с момента, когда приходит запрос?

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

Я пробовал установить max-age, но unfortunatelly max-age doesn't work with IE 11 и многие наши клиенты его используют.

Документов для mod_rewrite 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? Благодаря!

ответ

3

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

RewriteCond %{HTTP_COOKIE} h=\.([1-8]) [NC] 
RewriteRule . - [CO=h:.%1:.domain.com:30:/] 
+0

+1 Спасибо за правило. Я не копал больше в том, чтобы сделать эту часть родовой, потому что я хочу, чтобы ее можно было выполнить с помощью «Header set Set-Cookie», иначе я устанавливаю cookie без тайм-аута сразу после перезаписи. Это то, что я сейчас использую. – DavidG

+0

Я не знаю другого способа сделать это, кроме как с заголовком и этим кодом. Есть ли какая-то конкретная причина, по которой вы хотите достичь этого только с помощью заголовка? Лично я бы сделал это, как я ответил. Может быть, вы могли бы описать, что такое контекст и почему вы должны это делать, тогда мы могли бы увидеть, существует ли более эффективный вариант. –

+0

Просто потому, что я устанавливаю файл cookie, а затем переписываю его. Это кажется довольно расточительным. – DavidG

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^