Установите несколько файлов cookie в Apache

Я пытаюсь установить два файла cookie в Apache (2.2), используя mod_header, например:

Header set Set-Cookie "poodle=noodle;path=/;Secure;HttpOnly;Expires=Wed, Jan 01 2020 2:02:02 GMT"
Header set Set-Cookie "tweedle=puddle;path=/;Secure;HttpOnly;Expires=Wed, Jan 01 2020 2:02:02 GMT"

Но в браузер отправляется только последний файл cookie. Я сделал некоторые поиски, но нашел только людей, у которых есть эта проблема без решения. Я попытался объединить их в один:

Header set Set-Cookie "poodle=noodle;tweedle=puddle;path=/;Secure;HttpOnly;Expires=Wed, Jan 01 2020 2:02:02 GMT"

Та же проблема. Нужно ли вместо этого использовать «Добавление заголовка»? Любые примеры будут оценены.


person Spanky    schedule 17.05.2013    source источник


Ответы (2)


Я бы использовал mod_rewrite с флаг файла cookie синтаксис:

 [CO=NAME:VALUE:DOMAIN:lifetime:path:secure:httponly] 

Итак, вы хотите что-то похожее на:

RewriteEngine On
RewriteRule .* -  [CO=poodle:noodle:example.com:0:/:true:true]
RewriteRule .* -  [CO=tweedle:puddle:example.com:0:/:true:true]
person Don    schedule 17.05.2013
comment
Отлично работает, спасибо. До сих пор я никогда не замечал раздел [CO] документации для mod_rewrite. - person Spanky; 22.05.2013

Согласно руководству Apache http://httpd.apache.org/docs/current/mod/mod_headers.html#header следует использовать append:

Header append Set-Cookie "poodle=noodle;path=/;Secure;HttpOnly;Expires=Wed, Jan 01 2020 2:02:02 GMT"
Header append Set-Cookie "tweedle=puddle;path=/;Secure;HttpOnly;Expires=Wed, Jan 01 2020 2:02:02 GMT"

или в соответствии с HTTP используйте запятую для разделения нескольких значений:

Header append Set-Cookie "poodle=noodle;path=/;Secure;HttpOnly;Expires=Wed, Jan 01 2020 2:02:02 GMT, tweedle=puddle;path=/;Secure;HttpOnly;Expires=Wed, Jan 01 2020 2:02:02 GMT"

или используйте Header add, если вы хотите избежать разделенных запятыми файлов cookie в одном заголовке, чтобы следовать предложениям в разделе 3 RFC 6265 (как отмечено @SteveC):

Header add Set-Cookie "poodle=noodle;path=/;Secure;HttpOnly;Expires=Wed, Jan 01 2020 2:02:02 GMT"
Header add Set-Cookie "tweedle=puddle;path=/;Secure;HttpOnly;Expires=Wed, Jan 01 2020 2:02:02 GMT"
person Cybot    schedule 11.06.2014
comment
Вы жестко прописываете дату истечения срока действия в своей записи Set-Cookie? Как сделать так, чтобы это было динамично? - person DavidG; 10.04.2015
comment
вы можете использовать атрибут max-age (tools.ietf.org/html/rfc6265) с секундами , или вы делаете некоторую математику со временем запроса ... но я не знаю, как это сделать. - person Cybot; 14.04.2015
comment
max-age не работает с IE11 и более ранними версиями: mrcoles.com/blog/cookies-max-age-vs-expires/ - person DavidG; 14.04.2015
comment
Кстати, я спросил, как динамически установить срок действия в записи Set-Cookie здесь: /а> - person DavidG; 15.04.2015
comment
Вы не можете использовать Header append Set-Cookie, потому что это просто добавит значение cookie к любому существующему заголовку Set-Cookie с запятой. Это запрещено RFC6265. - person Steve C; 29.05.2017
comment
@SteveC, только не следует и не запрещается - если вы ссылаетесь на раздел 3 RFC6265, но вы можете использовать добавление заголовка вместо добавления для Set-Cookie - person Cybot; 09.06.2017
comment
Header add у меня сработало, но первые два способа не сработали - person Joe; 01.02.2021