Фильтр сервлета не отображается периодически

#java #angular #servlets #servlet-filters

#java #angular #сервлеты #servlet-фильтры

Вопрос:

Я столкнулся с очень странной проблемой.

Проблема в том, что у нас есть веб-приложение (war), созданное с использованием angular 4, и в нем также есть «Фильтр сервлетов», который сканирует каждый запрос на токен, и если этот токен недоступен, servlet filter перейдет на страницу входа третьей стороны. Если токен доступен, он просто загружается index.html и другие данные. Токен и некоторые другие параметры будут доступны в виде сеансовых файлов cookie для текущего веб-приложения.

Я получил доступ к URL-адресу приложения, вошел в приложение и выполнил некоторые действия в приложении и закрыл окно браузера без выхода из системы, и я попытался снова открыть тот же URL-адрес, фильтр сервлетов не вызывается.

Если я обновляю окно браузера, вызывается фильтр.

Если я очищаю кэш браузера, вызывается фильтр сервлетов. Я наблюдал такое же поведение в Chrome и Firefox. Я проверил журнал доступа к localhost, я не вижу там своего запроса. Может ли у кого-нибудь быть какие-либо идеи о том, в чем проблема и как исправить эту проблему?

Комментарии:

1. Вы имеете в виду, что ваш сайт восстанавливается точно до последнего сеанса, т. Е. выполняется вход в систему, если вы повторно открываете окно браузера / вкладку без выхода из системы?

2. Да, Просто 1) войдите в систему 2) закройте окно 3) снова откройте окно 4) Введите URL или щелкните закладку

3. @aravind Можете ли вы прикрепить код вашего фильтра?

4. Привет @ S. Код Дениса очень сложный, в нем более 1000 строк с множеством методов и операторов if else. Я не могу опубликовать здесь все. Вы хотите, чтобы я посмотрел на определенный фрагмент кода?

5. Можете ли вы опубликовать свое сопоставление фильтров и код фильтра. Просто чтобы понять, все ли вызовы проверяются на токен. Кроме того, при повторном открытии вы проверили, отправлен ли токен в запросе?

Ответ №1:

Причина в том, что Google Chrome кэширует, поэтому не все запросы отправляются на сервер. Но когда я обновляю chrome, он отправляет запрос на сервер. Когда я отключаю кэш, все работает нормально. Хороший урок о кэшировании.