почему Tomcat создает cookie-файл сеанса для каждого запроса? - PullRequest
0 голосов
/ 17 марта 2011

Я разрабатываю простое веб-приложение с использованием JSP / сервлетов на Tomcat. У меня есть страница index.jsp, которая представляет пользовательский интерфейс и загружает код JS, который делает повторные запросы AJAX «опроса» - простые вещи.

Проблема в том, что каждый ajax-запрос возвращает новый jsessionid, поэтому данные, которые я пытаюсь сохранить в объекте сеанса, каждый раз теряются.

Эта проблема НЕ возникает на моем компьютере разработчика, где я вызываю tomcat напрямую, она возникает только в промежуточной / рабочей среде, где запросы проходят через Apache (на моем компьютере разработчика я вызываю localhost ... / path / index.jsp и localhost ... / path / ajax.jsp - в прямом эфире apache направляет domain.com на domain.com/path/index.jsp и domain.com/ajax.jsp на domain.com/path/ajax.jsp)

Я проверил, что у меня нигде не настроен параметр useHttpOnly или useCookies. Мы используем Tomcat 6 BTW.

Может ли это быть проблема взаимодействия Apache-Tomcat?

Спасибо за любую помощь!

Ответы [ 3 ]

2 голосов
/ 17 марта 2011

Может ли это быть проблемой с путем куки. Возможно, сессионные куки-файлы привязаны к domain.com/path. Но с точки зрения браузера, путь это domain.com/

Установка пути к cookie для / заставит браузер также отправлять куки на domain.com/.

Можете ли вы проверить файлы cookie в Firebug / Fiddler и опубликовать содержимое здесь?

1 голос
/ 17 марта 2011

К сожалению, Servlet API довольно либерально в создании сессий. Различные инструменты имеют поведение по умолчанию которые могут неявно создавать сеансы на заднем фоне. Это очень легко приложение для «случайно» создать сеанс, даже когда один явно не запрашивается.

Например, JSP часто создают сеанс, если он еще не существовать. Это позволяет JSP использовать неявная переменная сеанса. Как второй Например, request.getSession () метод также автоматически создаст сеанс, если он еще не есть.

http://www.javapractices.com/topic/TopicAction.do?Id=191

Я думаю, что причина проблемы объяснена выше

0 голосов
/ 24 сентября 2012

Попробуйте <%@ page session="false" %> в верхней части index.jsp.Если это помогает, то найдите другой способ хранения значений (в области запроса)

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