web.xml的单个session-config元素中有多个跟踪模式元素?

时间:2019-07-09 04:04:42

标签: tomcat servlets

我正在将Tomcat 8.0.35用于我的Web应用程序。这篇文章

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

说我们可以在web.xml的单个session-config元素内使用多个跟踪模式元素

<web-app>
    <session-config>
        <tracking-mode>???</tracking-mode>
    </session-config>
 </web-app>

我找不到有关“多个跟踪模式元素”的其他信息。如果出现以下情况,Tomcat的行为可能是什么?

<web-app>
    <session-config>
        <tracking-mode>URL</tracking-mode>
        <tracking-mode>COOKIE</tracking-mode>
    </session-config>
 </web-app>

2 个答案:

答案 0 :(得分:1)

问题的答案可以在 email: Email; constructor() { } ngOnInit() { this.email = new Email(); console.log('this.email = ' + JSON.stringify(this.email)); } async sendEmail() { try { await this.email.hasPermission(); } catch (e) { await this.email.requestPermission(); }

中找到

以下代码来自tomcat 8.5:

org.apache.catalina.connector.CoyoteAdapter#postParseRequest

发生以下情况:

  1. 如果允许tomcat使用URL会话跟踪,它将尝试在URL请求中找到一个sessionId。
  2. 如果允许使用cookie跟踪-它会在cookie中查找会话ID。无论请求中是否有会话ID,它都具有优先级。
  3. (不是您的问题的一部分,而是出于完整性的考虑)仅当且仅当它是唯一允许的跟踪模式时,才使用SSL会话跟踪。否则它将被忽略。

我不知道为什么未使用SSL和Cookie跟踪模式这样的单独方法提取URL跟踪,但是它们看起来几乎是相同的:

  1. 检查模式是否已启用
  2. 尝试查找SessionId
  3. 在“请求”对象中设置会话ID。

答案 1 :(得分:1)

Tomcat 7的tracking-mode功能已替换为tomcat 6's disableURLRewriting

  

Context.disableURLRewriting:已删除。通过在Web应用程序或全局CATALINA_BASE / conf / web.xml文件中配置session-config / tracking-mode元素,可以获得等效的效果。

您可以Disable JSESSIONID in URL

  Servlet 3.0标准为您提供了两种方法来禁用URL会话重写。这可以在Tomcat 7,Glassfish v3和任何其他符合Servlet 3.0的servlet容器中使用