编程语言
首页 > 编程语言> > java-所有servlet容器都使用jsessionid来跟踪会话吗?

java-所有servlet容器都使用jsessionid来跟踪会话吗?

作者:互联网

我正在编写一个实用工具,需要模拟HttpServletResponse.encodeURL(…)和HttpServletResponse.encodeRedirectURL(…).

我知道许多servlet容器在URL后面加上; jsessionid = XXX来跟踪会话.我的问题是所有servlet容器都可以吗?

请注意,我知道如果首选cookie,可以关闭此功能.

所以,我的问题是:

>是否每个servlet容器都将; jsessionid = XXX附加到URL? (使用基于url的会话ID时)
>是否还有其他变体(例如jsessionid与JSESSIONID)
>在URL中还有其他奇怪的方式来跟踪会话ID吗?

我对所有主要的servlet容器(jetty,tomcat,jbos,websphere等)感兴趣.

解决方法:

是的,您绝对可以在Weblogic,Websphere,Jetty& Tomcat 7之前的版本(因为我已经做到了).但是,Java Servlet API的版本低于2.5,它声明会话标识cookie必须命名为JSESSIONID

weblogic.xml

<session-descriptor>
   <cookie-name>myCustomSessionId</cookie-name>
</session-descriptor>

码头

Eclipse Jetty的会话管理允许通过WEB-INF / web.xml上下文参数,或通过特定上下文上的init参数甚至在服务器端会话管理器上设置会话cookie名称和路径参数名称(以应用此功能设置为服务器上所有已部署的Web应用程序).

Session Management documentation中概述.

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app
  xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  version="2.5">
  ...
  <context-param>
    <param-name>org.eclipse.jetty.servlet.SessionCookie</param-name>
    <param-value>XSESSIONID</param-value>
  </context-param>
  <context-param>
    <param-name>org.eclipse.jetty.servlet.SessionIdPathParameterName</param-name>
    <param-value>xsessionid</param-value>
  </context-param>
  ...
</web-app>

Jetty还支持Servlet 3.0会话配置名称配置

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app
   xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
   metadata-complete="true"
   version="3.0">

   <session-config>
      <comment>This is my special cookie configuration</comment>
      <domain>foo.com</domain>
      <http-only>false</http-only>
      <max-age>30000</max-age>
      <path>/my/special/path</path>
      <secure>true</secure>
      <name>FOO_SESSION</name>
   </session-config>
</web-app>

Tomcat-context.xml

<Context path="/myApp" sessionCookieName="myCustomSessionId">

Latest tomcat

Tomcat no longer accepts non-specification compliant name-only cookies
by default. However, a new system property has been added,
org.apache.tomcat.util.http.ServerCookie.ALLOW_NAME_ONLY, that can be
used to accept name-only cookies.

IBM Websphere 6.1

06004

  
  Cookie名称-您的新名称

标签:httpsession,jsessionid,url,servlets,java
来源: https://codeday.me/bug/20191122/2058637.html