Управление сеансом, когда браузер отключил файлы cookie

Я хочу знать, как я могу управлять сеансом, если в клиентском браузере отключена функция файлов cookie.

Если я хочу реализовать это в простом JSP-Servlet, то как я могу это сделать?

Заранее спасибо...


person Nirmal    schedule 25.11.2009    source источник


Ответы (4)


На стороне JSP вы можете использовать JSTL <c:url> для этого.

<a href="<c:url value="page.jsp" />">link</a>

Просто так. Он автоматически добавит jsessionid, когда файлы cookie отключены.

На стороне сервлета вам понадобится HttpServletResponse#encodeURL() или - обычно предпочтительнее внутри сервлетов- HttpServletResponse#encodeRedirectURL() для этого.

response.sendRedirect(response.encodeRedirectURL("page.jsp"));
person BalusC    schedule 25.11.2009

Без файлов cookie у вас есть два варианта. Первый — это передача sessionId через URL-адреса. Это требует большой работы на сервере, потому что каждый URL-адрес, который вы отправляете обратно, должен иметь добавленный к нему sessionId (обычно в форме параметра строки запроса). Например:

/путь/к/странице

становится

/path/to/page?sessionid=ASDFG-ASDFG-ASDFG-ASDFG-ASDFG

Другой вариант, который у вас есть, - это объединить информацию, которую вы имеете через http, в «уникальный» ключ и создать свой собственный сегмент сеанса. Комбинируя Http UserAgent, RemoteIp и RemoteXfip, вы можете приблизиться к уникальной идентификации пользователя, но нет никаких гарантий, что этот ключ уникален на 100%.

person LorenVS    schedule 25.11.2009
comment
что произойдет, если я нажму F5 в своем браузере для второго варианта? - person YOU; 25.11.2009
comment
поскольку пользовательский агент, remoteIp и remoteXfip отправляются на сервер по всем запросам, вы можете создать один и тот же уникальный ключ и выполнить поиск в своей корзине сеанса. В этом преимущество второго решения, оно не требует каких-либо изменений в структуре веб-сайта или структуре URL-адреса. - person LorenVS; 25.11.2009


Каждый URL должен быть закодирован с использованием response.encodeURL("page.jsp")

Это добавит идентификатор сеанса в конец каждого URL-адреса, поэтому файлы cookie не нужно включать.

Обратите внимание, что вам придется сделать это вручную для каждого URL, чтобы все заработало.

См. эту ссылку для получения дополнительной информации.

person Community    schedule 25.11.2009