我正在编写一个实用工具,需要模拟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">
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名称-您的新名称