2010-07-07 2 views
10

звонитВызывает HttpServletResponse.addCookie() с тем же именем файла cookie?

HttpServletResponse.addCookie(); 

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

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

Пример:

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

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

ответ

6

Обновленный ответ - как комментарии @skaffman и @Stephen C показывают, что это не идеальная практика.

RFC, Spec при http://www.ietf.org/rfc/rfc2109.txt состояниях

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

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

Set-Cookie: Foo = бар
Set-Cookie: Foo = 42

Здесь foo перезаписывается. Чтение файла cookie позже дает вам 42.

+1

Все это доказывает, что конкретная реализация 'HttpServletResponse' что-то делает. Однако API не определяет поведение, поэтому другие реализации могут сделать что-то еще. – skaffman

+0

Ну, я предложил попробовать O/P на своем сервере, чтобы проверить поведение – JoseK

+2

, было бы лучше предположить, что он вообще этого не сделает! Это создает потенциальную проблему переносимости. –

2

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

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