Chrome и Firefox, не очищающие cookie JSESSIONID, вызывают цикл перенаправления

У меня есть приложение, которое получает запросы HTTP / HTTP на веб-сервере Apache и передает их tomcat.

Недавно я столкнулся с проблемами с сеансами и циклами перенаправления в браузерах Google Chrome и Firefox после выхода некоторых пользователей из системы по истечении сеансов. Мне удалось отследить проблему и обнаружить, что браузер не очищает файл cookie JSESSIONID. После ручной очистки он снова начинает работать.

Я проверил файлы журналов веб-сервера Apache и обнаружил следующее:

172.16.254.157 - - [06/Feb/2017:05:23:27 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:29 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:29 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:29 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:30 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:30 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:30 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:31 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:31 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:31 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:32 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:32 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:32 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:33 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:33 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:33 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:34 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:34 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:34 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:35 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:35 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
122.176.45.206 - - [06/Feb/2017:05:24:33 -0600] "GET /preview/login.admin HTTP/1.1" 302 20

Сервер Apache получает эти запросы, но на Tomcat ничего не пересылается.

Вкладка сети в окне Chrome inspect element показывает мне следующее: введите описание изображения здесь

Но это работает после того, как я очищу файл cookie JSESSIONID.


Это довольно странно, но эта проблема возникла около недели назад (приложение работает последние 4 года!), И это совпадает с новым развертывание обновления.

Я пробовал гуглить и обнаружил, что у людей были похожие проблемы еще в 2012 и 15 годах.

Что-то действительно не так с Chrome? Меняются ли стандарты Интернета? Тем не менее, как я могу это исправить?


РЕДАКТИРОВАТЬ:

1. Проблема только в Google Chrome.


Редактировать # 2:

  1. Проблема началась и с Mozilla Firefox.

person Jay    schedule 06.02.2017    source источник


Ответы (1)


Если вы внимательно посмотрите на свой трафик, кажется, что он чередуется между http и https.

Две догадки:

(а) существует правило перенаправления, работающее против вас, например кто-то подумал, что было бы неплохо автоматически перенаправить http на https, но не использовать HSTS.

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

Или (c) две указанные выше проблемы взаимодействуют, вызывая такое поведение.

person John Wu    schedule 07.02.2017
comment
Это помогло. Спасибо - person Jay; 07.02.2017
comment
Итак, как это исправить? У меня такая же проблема, и я пришел к тем же выводам, что и в этом ответе, но где ее решение? - person Alex Burdusel; 03.03.2017
comment
как решить вопрос (б)? У меня аналогичная проблема, но приложение разработано не мной, и требуется навсегда, какая часть приложения вызывает это. - person Dave Doga Oz; 14.04.2018