Недавно я заметил, что при перезагрузке моего веб-сервера Tomcat браузер Chrome больше не может хранить файлы cookie. т.е. tomcat использует файлы cookie для http-сеансов, и браузер больше не может получить свой сеанс http, а также cookie, который мы используем для хранения зарегистрированного пользователя, терпит неудачу, и пользователь не остается в системе.
Это, кажется, новая проблема с Chrome, возможно, из недавнего обновления, я не помню, чтобы это было раньше. Если я закрою браузер Chrome, а затем снова его заново, он будет снова прекрасен (пока сервер не перезагрузится снова).
Проблема не возникает в Firefox, похоже на ошибку в Chrome.
Кто-нибудь еще заметил эту проблему или знал о решении?
Я нашел несколько сообщений о проблемах с Chrome/tomcat cookie и предложение установить, sessionCookiePathUsesTrailingSlash = false в контексте .xml но это не устраняет проблему.
Кажется, это может быть связано с сайтом, поддерживающим как https, так и http, и переключение между ними (хотя это произошло на веб-сайте, который также не поддерживает https...)
Хорошо, теперь я могу воссоздать проблему, шаги.
- подключиться к веб-сайту через https
- logout/login
- подключиться к веб-сайту через http
- Tomcat JSESSIONID cookie больше не может быть сохранен (нечетные куки файлы пользователя/пароля хранятся)
Это происходит только в Chrome, и только после обновления Chrome, который добавляет флаг "небезопасный" на страницах входа, которые используют http
Хорошо, я добавил это в свой web.xml
<session-config>
<cookie-config>
<http-only>true</http-only>
<secure>true</secure>
</cookie-config>
</session-config>
Это не устранило проблему, но проблема всегда возникала с помощью http, т.е. заставляла http больше не хранить файл cookie JSESSIONID.
Я пробовал <secure>false</secure>
, но все еще получаю старую проблему.
Поэтому, по крайней мере, это связано с этой настройкой. У кого-нибудь есть идеи?
Записанная ошибка в Chrome, https://bugs.chromium.org/p/chromium/issues/detail?id=698741