Почему мой идентификатор сеанса в моем URL-адресе?

77
9

Итак, я проделал шаги по созданию базового приложения для роумов здесь: http://static.springsource.org/spring-roo/reference/html/beginning.html


Я запустил свой сервер и начал играть с приложением, не мог не заметить, что в моем URL-адресе есть "jsessionid":


http://localhost:8080/pizzashop/pizzas;jsessionid=0A8EA5D9E8665C8AC80F141C3818F6BA?form


Мне все равно! Зачем нужен идентификатор сеанса в URL? Могу ли я избавиться от этого? Кажется, RESTful этого не существует.

спросил(а) 2021-01-25T15:02:16+03:00 4 месяца, 4 недели назад
1
Решение
77

Это стандартное поведение JavaEE и продиктовано и контролируется контейнером сервлета. Это не имеет никакого отношения к Spring.

Смотрите этот предыдущий вопрос, чтобы узнать, почему и когда он создается, и как его избежать.

ответил(а) 2021-01-25T15:02:16+03:00 4 месяца, 4 недели назад
64

Я не видел этого ответа в другом вопросе, поэтому я хотел его объяснить. Как работают сеансы в java, и я думаю, что php, когда клиент сначала приходит, он создает cookie и добавляет JESSIONID ко всем URL-адресам, которые использовали тег <c:url/>. Причина, по которой это происходит, заключается в том, что, когда клиент впервые посещает страницу, сервер не знает, поддерживает ли клиент файлы cookie. Так оно и делает. В следующий раз, поскольку он видит файл cookie, он больше не будет использовать URL-адреса, потому что он знает, что файлы cookie работают.


Существует много способов отключить это. Если вы вообще не используете сеансы, вы можете отключить файлы cookie, поместив cookie = false в context.xml. Это отключает файлы cookie для сеанса, а не обычные файлы cookie. Затем вы можете использовать urlrewrite для определения сеанса.

Надеюсь, что это поможет.

ответил(а) 2021-01-25T15:02:16+03:00 4 месяца, 4 недели назад
45

В моем случае это происходило, когда приложение было развернуто на моем рабочем столе и не использовало https. В этом случае в weblogic.xml, cookie-secure должно быть установлено значение false. В противном случае управляемый идентификатор сеанса cookie будет работать только через https.


<wls:cookie-secure>false</wls:cookie-secure>

ответил(а) 2021-01-25T15:02:16+03:00 4 месяца, 4 недели назад
45

Какой сервер приложений вы используете? Я знаю, что Weblogic по крайней мере всегда будет делать сеанс с кодировкой URL, а также сеанс на основе cookie, по крайней мере, на первый вызов, чтобы узнать, включены ли cookie на клиенте. Если он не может найти файл cookie, соответствующий идентификатору сеанса URL-адреса при следующем вызове, он продолжит использовать токен сеанса из URL-адреса. Я знаю, когда они переключили нашу компанию на использование Sharepoint для веб-сканирования и поиска веб-сайтов Windows, которые скулили в течение долгого времени о проблеме, пока они, наконец, не поняли, что все, что им нужно было сделать, - включить поддержку сеанса cookie.

ответил(а) 2021-01-25T15:02:16+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема