Shiro + Guice + Chrome,JSESSIONID每个请求都会重置Cookie

时间:2018-06-28 15:44:54

标签: google-chrome react-redux guice shiro jsessionid

我现在真的很沮丧,因为我几个小时都无法解决问题。我几乎完成了基于Apache Shiro,Google Guice,Jersey REST和前端react + redux的Web应用程序的构建。直到今天,它在Google Chrome上确实可以正常工作,但是Chrome突然无法保持会话,因为JSESSIONID随每个请求而变化。我无法弄清楚问题,另一方面,Firefox运行正常。这真让我感到困惑。我在网上搜索了可能的解决方案,但能够找到此问题,但所提供的解决方案均不适合我。

我在浏览器中提出了Screenshot个请求。第一个REST请求运行良好,然后由于某种原因请求了一个favicon.ico文件,该文件设置了一个新的JSESSIONID。从那时起,会话丢失。我不知道请求可能来自哪里。我从不使用收藏夹图标...

如果您需要其他信息,请告诉我!如果有人能指出正确的方向,我将非常感激。我坐在这里待了几个小时,试图解决问题。

最诚挚的问候!

1 个答案:

答案 0 :(得分:1)

我的天哪,经过数小时的研究,我发现了问题所在,而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>

这意味着从重定向中排除favicon解决了我的问题,但是为什么失败的favicon请求设置了一个我真不知道的新JSESSIONID cookie。很高兴我的应用程序可以再次使用!