我正在编写一个需要模仿HttpServletResponse.encodeURL(...)
和HttpServletResponse.encodeRedirectURL(...)
的实用程序。
我知道许多servlet容器会将;jsessionid=XXX
附加到URL以跟踪会话。我的问题是做所有 servlet容器吗?
请注意,我知道如果首选cookie,可以关闭此功能。
所以,我的问题:
;jsessionid=XXX
附加到URL吗? (当使用基于网址的会话ID时)我对所有主要的servlet容器感兴趣(jetty,tomcat,jbos,websphere等等)
答案 0 :(得分:3)
是的,你绝对可以在Weblogic,Websphere,Jetty& Tomcat之前的7(因为我已经完成了)。但是,直到版本2.5的Java Servlet API声明会话标识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不再接受非规范兼容的仅限名称的Cookie 默认情况下。但是,添加了一个新的系统属性, org.apache.tomcat.util.http.ServerCookie.ALLOW_NAME_ONLY,可以是 用于接受仅限名称的cookie。
IBM Websphere 6.1
Servers > Application servers > server_name > Web container settings > Session management > Enable cookies
Cookie名称 - 您的新名称