Java JBoss7将JSESSIONID附加到URL,尽管跟踪模式是cookie

Java JBoss7将JSESSIONID附加到URL,尽管跟踪模式是cookie,java,jboss,jboss7.x,servlet-3.0,jsessionid,Java,Jboss,Jboss7.x,Servlet 3.0,Jsessionid,是的,这是另一个“URL中的JSESSIONID”问题,但我还没有找到答案。我正在运行JBoss AS 7.1.1 Final,这是我的web.xml: <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://java.sun.com/

是的,这是另一个“URL中的JSESSIONID”问题,但我还没有找到答案。我正在运行JBoss AS 7.1.1 Final,这是我的web.xml:

<web-app version="3.0"
  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">

    <session-config>
        <cookie-config>
            <!-- Prevents session cookie from being read by clientside scripts -->
            <http-only>true</http-only>
            <!-- Prevents the session cookie from being transmitted on HTTP -->
            <!-- secure>true</secure-->
        </cookie-config>
        <tracking-mode>COOKIE</tracking-mode>
        <session-timeout>30</session-timeout>
    </session-config>

    <servlet>
        <servlet-name>appServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>com.cgi.dk.vias.web.config.WebConfig</param-value>
        </init-param>
        <init-param>
        <param-name>contextClass</param-name>
        <param-value>
            org.springframework.web.context.support.AnnotationConfigWebApplicationContext
        </param-value>
    </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>appServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

真的
曲奇
30
appServlet
org.springframework.web.servlet.DispatcherServlet
上下文配置位置
com.cgi.dk.vias.web.config.WebConfig
上下文类
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
1.
appServlet
/
基于internet搜索和这里关于堆栈溢出的回答(例如),我的理解是设置
COOKIE
应该防止JSSessionID附加到URL。但是,当我使用新的浏览器窗口(即没有现有cookie或会话)浏览我的站点时,所有链接都会在第一个响应中附加JSESSIONID。如果我刷新页面,JSESSIONID就会消失,因为它会进入cookie

我知道我可以创建一个过滤器来删除它,但如果可能的话,我宁愿避免篡改html

当然,我的浏览器支持cookies,并且它们是启用的


我对
元素的理解是错误的,还是我遗漏了什么?

如果您使用的是spring security,那么您应该尝试将
元素的禁用url重写属性设置为true


关于,

我知道这是一篇3年前的文章,但看起来这是Jboss自7.1.0以来的一个已知错误


你有没有想过这个问题?嗯,这个问题似乎已经解决了,但我不确定确切的原因是什么——我的web.xml看起来仍然像上面提到的那样,我没有引入过滤器之类的东西来处理它。正如下面的答案所建议的,我确实使用了Spring安全性,但我使用基于java的配置,并且没有显式地设置disableUrlRewriting。如果问题确实源于Spring安全性,那么很可能是默认设置了该属性,或者我已经将其升级到了没有问题的新版本。我还添加了一个阀门来处理单点登录,但我不确定这是否相关。不幸的是,我没有一个明确的答案。我也有同样的问题。在Tomcat7中运行时,该选项起作用,并且没有会话id,但部署到JBoss7.1.1时,该选项似乎被忽略。我还使用了Spring3.0.x。很明显,这是JBoss7.x中的一个bug,跟踪模式设置被忽略了:(在v7.1.3“发布”后立即修复,好吧……标记)一个对我有效的解决方法是