2014-02-25 62 views
6

是的,這是另一個「JSESSIONID in URL」問題,但我一直未能找到答案。我運行JBoss AS 7.1.1決賽,這是我的web.xml:JBoss 7將JSESSIONID附加到URL,儘管跟蹤模式cookie

<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> 

基於互聯網搜索和答案在這裏堆棧溢出(如https://stackoverflow.com/a/11350819/224143),這是我的理解是設置<tracking-mode>COOKIE</tracking-mode>應防止JSESSIONID從追加到URL。但是,當我用新的瀏覽器窗口瀏覽我的網站時(即不存在cookie或會話),所有鏈接都在第一個響應中附加了JSESSIONID。如果我刷新頁面,JSESSIONID會消失,因爲它會進入cookie。

據我所知,我可以創建一個過濾器來刪除它,但我寧願避免篡改html如果可能的話。

我的瀏覽器支持cookies,當然,它們已啓用。

我對<tracking-mode>元素的理解是否錯誤,或者是否還有其他內容我不知道?

+0

在JBoss中的已知錯誤,你有沒有想出解決辦法? – Nate

+0

好吧,這似乎已經解決了,但我不確定爲什麼 - 我的web.xml仍然看起來像上面,我沒有引入過濾器或類似的東西來處理它。我按照下面的答案建議使用Spring安全性,但我使用基於java的配置,並沒有明確設置disableUrlRewriting。如果問題確實源自Spring Security,它可能是默認設置的屬性,或者我將它升級到新的版本而沒有問題。我還添加了Valve來處理單點登錄,但我不確定這是否相關。不幸的是我沒有一個明確的答案。 –

+0

我有同樣的問題。在Tomcat7中運行時,該選項有效,並且沒有會話標識,但是在部署到JBoss7.1.1時,該選項似乎被忽略。我也使用Spring 3.0.x. –

回答

3

如果您正在使用春季安全,那麼你應該嘗試設置禁用-URL重寫<http>元素的屬性真正

問候,