Поведение jsessionid
не имеет никакого отношения к STATELESS.
Изначально контейнер сервлета не знает, поддерживает ли клиент (браузер) файлы cookie или нет.
Следовательно, при первом запросе к странице (обычно HTTP GET):
- Контейнер сервлета добавит
;jsessionid=...
ко всем URL-адресам. - Контейнер сервлета будет (пытаться) выполнить установить повара ie с помощью
jsessionid
.
При нажатии на ссылку или отправке формы (HTTP GET / POST) браузер отправит повара ie обратно на сервер , ЕСЛИ И ТОЛЬКО ЕСЛИ браузер в первую очередь принял настройку cook ie. Теперь контейнер сервлета может определить, был ли jsessionid
получен поваром ie (передан через заголовок HTTP-запроса), или URL.
Если jsessionid
произошел от повара ie, контейнер сервлета перестанет добавлять ;jsessionid=...
к URL-адресам. Если jsessionid
произошел от URL, который вы щелкнули, он продолжит добавлять ;jsessionid=
ко всем URL.
Это не имеет никакого отношения к STATELESS или любой другой конфигурации SessionCreationPolicy
.
Ознакомьтесь с документацией Spring Security для SessionCreationPolicy
:
/** Always create an {@link HttpSession} */
ALWAYS,
/**
* Spring Security will never create an {@link HttpSession}, but will use the
* {@link HttpSession} if it already exists
*/
NEVER,
/** Spring Security will only create an {@link HttpSession} if required */
IF_REQUIRED,
/**
* Spring Security will never create an {@link HttpSession} and it will never use it
* to obtain the {@link SecurityContext}
*/
STATELESS
Обновление:
Чтобы отключить режим отслеживания через URL, установите следующее свойство:
server.servlet.session.tracking-modes: COOKIE
см .: https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html