是的,這是另一個「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>
元素的理解是否錯誤,或者是否還有其他內容我不知道?
在JBoss中的已知錯誤,你有沒有想出解決辦法? – Nate
好吧,這似乎已經解決了,但我不確定爲什麼 - 我的web.xml仍然看起來像上面,我沒有引入過濾器或類似的東西來處理它。我按照下面的答案建議使用Spring安全性,但我使用基於java的配置,並沒有明確設置disableUrlRewriting。如果問題確實源自Spring Security,它可能是默認設置的屬性,或者我將它升級到新的版本而沒有問題。我還添加了Valve來處理單點登錄,但我不確定這是否相關。不幸的是我沒有一個明確的答案。 –
我有同樣的問題。在Tomcat7中運行時,該選項有效,並且沒有會話標識,但是在部署到JBoss7.1.1時,該選項似乎被忽略。我也使用Spring 3.0.x. –