Управление сессиями в Tomcat - PullRequest
4 голосов
/ 15 декабря 2009

Я разработал простое веб-приложение с двумя сервлетами A и B.

У меня есть несколько сомнений относительно управления сессиями для веб-приложения Tomcat.

ПРИМЕЧАНИЕ. - Я отключил файлы cookie в своем веб-браузере (Chrome) при доступе к веб-приложению.

1.) При первом обращении к веб-приложению вызывается сервлет А. Сервлет A получает доступ к сеансу из запроса и выполняет простой sysout хеш-кода сеанса. Затем он sendRedirect сервлет B.

[Насколько я понимаю, поскольку это первый запрос, Tomcat отправит cookie, содержащий новый идентификатор сессии, обратно в браузер. Однако, поскольку мы не «закодировали» URL-адрес перенаправления с помощью HttpResponse.encodeRedirectURL () , URL-адрес перенаправления не будет содержать идентификатор сеанса, добавленный к нему. Пожалуйста, поправьте меня, если я ошибаюсь.]

2.) Поскольку в моем браузере отключены файлы cookie, он будет игнорировать идентификатор сеанса, отправленный обратно в файле cookie, и выдаст новый запрос на URL перенаправления (к которому также не добавлен идентификатор сеанса).

3.) Новый запрос вызывает запуск сервлета B, который также обращается к сеансу запроса и выполняет sysout хеш-кода сеанса.

Меня смущает то, что оба сервлета A и B выводят один и тот же хэш-код сеанса, что означает, что они получают один и тот же сеанс из обоих запросов.

Как второй запрос от браузера отображается на тот же сеанс, что и раньше, даже если идентификатор сеанса не был отправлен?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 15 декабря 2009

Вы уверены, что вы отключили "в памяти" куки? Зачастую браузеры позволяют отключать постоянные файлы cookie, сохраняемые на диске, но они по-прежнему допускают временные файлы cookie в памяти, которые сохраняются только во время сеанса браузера.

Я рекомендую Wireshark для анализа потока HTTP. Таким образом, вы можете видеть куки, которые отправляются и принимаются вашим браузером.

2 голосов
/ 15 декабря 2009

Существует только 2 способа передачи сеансов между запросами: перезапись cookie и перезапись URL. Если вы не видите идентификатор сеанса в URL, это должны быть файлы cookie.

Вы уверены, что cookie отключен? Это должно быть легко увидеть из трассировки HTTP-заголовка.

0 голосов
/ 15 декабря 2009

Это странно.

Когда я вчера тестировал приложение, оно демонстрировало поведение, подобное тому, что я описал. Однако сейчас, когда я тестирую приложение, оно работает отлично, как я и ожидаю.

Возможно, причина в том, что я не перезапустил сеанс браузера после отключения файлов cookie.

Дадим вам знать, если я снова испытаю то же самое поведение.

Спасибо за ваше время, ребята!

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