首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >web.xml中单个会话配置元素中的多个跟踪模式元素?

web.xml中单个会话配置元素中的多个跟踪模式元素?
EN

Stack Overflow用户
提问于 2019-07-09 04:04:42
回答 2查看 1K关注 0票数 2

我的web应用程序使用Tomcat 8.0.35。这个职位

https://www.logicbig.com/tutorials/java-ee-tutorial/java-servlet/session-tracking-mode.html

说明我们可以在web.xml中的单个会话配置元素中使用多个跟踪模式元素。

代码语言:javascript
复制
<web-app>
    <session-config>
        <tracking-mode>???</tracking-mode>
    </session-config>
 </web-app>

我无法找到关于“多跟踪模式元素”的附加信息。如果我有以下情况,Tomcat的行为会是什么?

代码语言:javascript
复制
<web-app>
    <session-config>
        <tracking-mode>URL</tracking-mode>
        <tracking-mode>COOKIE</tracking-mode>
    </session-config>
 </web-app>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-09 04:24:19

这个问题的答案可以在org.apache.catalina.connector.CoyoteAdapter#postParseRequest中找到

以下代码来自tomcat 8.5:

代码语言:javascript
复制
            String sessionID;
            if (request.getServletContext().getEffectiveSessionTrackingModes()
                    .contains(SessionTrackingMode.URL)) {

                // Get the session ID if there was one
                sessionID = request.getPathParameter(
                        SessionConfig.getSessionUriParamName(
                                request.getContext()));
                if (sessionID != null) {
                    request.setRequestedSessionId(sessionID);
                    request.setRequestedSessionURL(true);
                }
            }

            // Look for session ID in cookies and SSL session
            parseSessionCookiesId(request);
            parseSessionSslId(request);

            sessionID = request.getRequestedSessionId();

发生了以下情况:

  1. 如果允许tomcat使用URL会话trcking,它将尝试在URL请求中找到一个sessionId。
  2. 如果允许它使用cookie跟踪-它会在cookie中查找会话id。它优先,不管请求中是否有会话id。
  3. (不是您问题的一部分,而是为了完整性) SSL会话跟踪被使用的当且仅当它是唯一允许的跟踪模式。否则它将被忽略。

我不知道为什么不像SSL和Cookie跟踪模式那样在sepratate方法中提取URL跟踪,但它们看起来几乎相同:

  1. 检查是否启用了模式
  2. 试着找到SessionId
  3. 在请求对象中设置会话ID。
票数 3
EN

Stack Overflow用户

发布于 2019-07-09 04:24:42

Tomcat 7的tracking-mode功能取代了tomcat 6的disableURLRewriting

Context.disableURLRewriting:这个已经被删除了。可以通过在web应用程序或全局CATALINA_BASE/conf/web.xml文件中配置会话-config/跟踪模式元素来获得等效效果。

你可以禁用URL中的JSESSIONID

Servlet3.0标准为您提供了两种禁用URL会话重写的方法。这适用于Tomcat 7、Glassfish v3和任何其他符合Servlet 3.0的servlet容器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56945183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档