Shiro + Guice + Chrome, JSESSIONID Cookie сбрасывается при каждом запросе - PullRequest
0 голосов
/ 28 июня 2018

Сейчас я действительно в отчаянии, потому что не могу разобраться в проблеме часами. Я почти закончил создание своего веб-приложения на основе Apache Shiro, Google Guice, Jersey REST и в веб-интерфейсе реагировать + избыточно. До сегодняшнего дня он действительно хорошо работал в Google Chrome, но внезапно Chrome не может удерживать сеанс, потому что JSESSIONID изменяется при каждом запросе. Я не могу понять проблему, Firefox, с другой стороны, работает нормально. Это действительно смущает меня. Я искал в Интернете возможные решения и смог найти эту проблему, но ни одно из предложенных решений не помогло мне.

Я сделал Снимок экрана запросов в браузере. Первые запросы REST работают нормально, затем по какой-то причине запрашивается файл favicon.ico, который устанавливает новый JSESSIONID. С этого момента сеанс теряется. Я не знаю, откуда запрос может прийти. Я никогда не использую значки ...

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

С наилучшими пожеланиями!

1 Ответ

0 голосов
/ 28 июня 2018

Боже мой, после нескольких часов исследований я нашел проблему, и это был запрос favicon, который не удался только в Chrome. Проблемой были правила перенаправления причала в моем случае. У меня было следующее правило:

    <Call name="addRule">
        <Arg>
            <New class="org.eclipse.jetty.rewrite.handler.RewriteRegexRule">
                <Set name="regex">^(?:(?!\/rest\/|\/resources\/|\/login).)*$</Set>
                <Set name="replacement">/sua-ui/resources/secure/index.jsp</Set>
            </New>
        </Arg>
    </Call>

, который я изменил на

    <Call name="addRule">
        <Arg>
            <New class="org.eclipse.jetty.rewrite.handler.RewriteRegexRule">
                <Set name="regex">^(?:(?!\/rest\/|\/resources\/|\/login|favicon).)*$</Set>
                <Set name="replacement">/sua-ui/resources/secure/index.jsp</Set>
            </New>
        </Arg>
    </Call>

Это означает, что исключение значка из редиректов решило мою проблему, но почему неудавшийся запрос значка установил новый файл cookie JSESSIONID, я действительно не знаю. Рад, что мое приложение снова работает!

...