Вызывает HttpServletResponse.addCookie() с тем же именем файла cookie?
Вызывает
HttpServletResponse.addCookie();
(из servlet-api-2.5) несколько раз, используя безопасный файл cookie с таким же именем?
Безопасно в том смысле, что существует детерминированное поведение, например. последующие вызовы будут проигнорированы (первые победы) или последующие вызовы всегда будут заменять файл cookie или что-то в этом роде?
Пример:
HttpServletResponse response = ...;
response.addCookie(new Cookie("foo", "bar"));
response.addCookie(new Cookie("foo", "42"));
Какое значение будет передано и сохранено браузером?
Ответы
Ответ 1
Обновленный ответ - поскольку комментарии от @skaffman и @Stephen C показывают, что это не идеальная практика.
Спецификация RFC в http://www.ietf.org/rfc/rfc2109.txt утверждает
Параметр-атрибут NAME = VALUE должен быть первым в каждом файле cookie. Если появляется атрибут более одного раза в cookie, поведение undefined.
На сервере Tomcat поведение - это фактические заголовки, отправленные в браузер:
Set-Cookie: foo = bar
Set-Cookie: foo = 42
Здесь foo перезаписывается. Чтение файла cookie позже дает вам 42.
Ответ 2
Дополнительный комментарий - обратите внимание, что настройка разных поддоменов на файлы cookie с тем же именем в одном ответе изменяет поведение. Я просто протестировал сохранение файлов cookie с тем же именем, но разными поддоменами в последних версиях java 1.6/firefox/safari/chrome на моем mac, и он вел себя так, как ожидалось, сохраняя оба файла cookie. Я понимаю, что это поведение не гарантируется спецификацией, но просто скажите, что может быть полезно знать об этом.