Вопрос

Я всегда принимал как должное то, что JSESSIONID файл cookie создается для каждого нового запроса для данного клиента при разработке приложений с использованием спецификации сервлета.Но, немного поразмыслив, не логичнее ли для контейнера сервлета создать только заголовок cookie после сеанс был запрошен и создан в коде?Для клиентов, у которых отключены файлы cookie, не приведет ли это в конечном итоге к созданию нового HttpSession для каждого сделанного запроса?

Пожалуйста, дайте мне знать, если вопрос все еще неясен, чтобы я мог его отредактировать.ТИА.

Это было полезно?

Решение

Новый сеанс не будет создан контейнером сервлета по умолчанию, если только сервлет на самом деле не создаст его явно.Просто потому, что в заголовке заполняется JSEESIONID, это не означает, что на сервере должен быть seesion.Исключением из этого являются JSP, которые по умолчанию создают сеанс, если его там нет, если только <%@ сессия страницы="ложь" %>

Что касается того, что куки-файлы не включены:

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

Если ваше приложение использует объекты session , вы должны убедиться, что отслеживание сеанса включено, заставив приложение переписывать URL-адреса всякий раз, когда клиент отключает файлы cookie.Вы делаете это , вызывая метод encodeURL(URL) ответа для всех URL-адресов , возвращаемых сервлетом.Этот метод включает идентификатор сеанса в URL -адрес только в том случае, если файлы cookie отключены;в противном случае он возвращает URL -адрес без изменений.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top