Безопасно ли вызывать HttpServletResponse.addCookie () с тем же именем cookie? - PullRequest
11 голосов
/ 07 июля 2010

Вызывает ли

HttpServletResponse.addCookie();

(из servlet-api-2.5) несколько раз, используя cookie с тем же именем, безопасно?

Безопасно в том смысле, что существует детерминированное поведениеНапример, последующие вызовы будут игнорироваться (первые выигрыши) или последующие вызовы всегда заменят cookie или что-то в этом роде?

Пример:

HttpServletResponse response = ...;
response.addCookie(new Cookie("foo", "bar"));
response.addCookie(new Cookie("foo", "42"));

Какое значение будет переданои хранится в браузере?

Ответы [ 2 ]

7 голосов
/ 07 июля 2010

Обновленный ответ - как показывают комментарии @skaffman и @Stephen C, это не идеальная практика.NAME = VALUE пара атрибут-значение должна быть первой в каждом файле cookie. Если атрибут появляется более одного раза в файле cookie, поведение не определено.

На сервере Tomcat поведение представляет собой фактические заголовки, отправляемые в браузер:

Set-Cookie: foo = bar
Set-Cookie: foo = 42

Здесь foo перезаписывается.Чтение куки позже даст вам 42.

2 голосов
/ 06 марта 2014

Дополнительный комментарий - обратите внимание, что установка разных поддоменов для файлов cookie с одинаковым именем в одном и том же ответе меняет поведение. Я только что протестировал сохранение файлов cookie с тем же именем, но с разными поддоменами в последних версиях java 1.6 / firefox / safari / chrome на моем Mac, и он вел себя как ожидалось, сохранив оба файла cookie. Я понимаю, что это поведение не гарантируется спецификацией, но просто говорю, что полезно знать об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...