【问题标题】:Shiro+Guice+Chrome, JSESSIONID Cookie is reset on every requestShiro+Guice+Chrome, JSESSIONID Cookie 在每次请求时重置
【发布时间】:2018-12-07 18:35:56
【问题描述】:

我现在真的很绝望,因为我几个小时都无法找出问题所在。我几乎完成了基于 Apache Shiro、Google Guice、Jersey REST 和前端 react+redux 的网络应用程序的构建。直到今天它在 Google Chrome 上运行良好,但突然 Chrome 无法保持会话,因为每次请求都会更改 JSESSIONID。我无法找出问题所在,另一方面,Firefox 工作正常。这对我来说真的很困惑。我在网上搜索了可能的解决方案,并能够找到这个问题,但提供的解决方案都不适用于我。

我在浏览器中创建了Screenshot 的请求。第一个 REST 请求工作正常,然后由于某种原因请求了一个 favicon.ico 文件,该文件设置了一个新的 JSESSIONID。从此会话丢失。我不知道请求可能来自哪里。我从不使用网站图标...

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

最好的问候!

【问题讨论】:

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


    【解决方案1】:

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

    这意味着从重定向中排除网站图标解决了我的问题,但我真的不知道为什么失败的网站图标请求设置了一个新的 JSESSIONID cookie。很高兴我的应用再次运行!

    【讨论】:

      猜你喜欢
      • 2020-03-09
      • 2013-12-02
      • 2017-03-29
      • 2014-02-08
      • 2017-12-09
      • 1970-01-01
      • 2021-10-03
      • 2017-07-21
      • 1970-01-01
      相关资源
      最近更新 更多