2010-11-02 68 views
2

所以我一步步去構建一個基本的Roo的應用在這裏:http://static.springsource.org/spring-roo/reference/html/beginning.html爲什麼我的會話ID在我的網址?

,我開始了我的服務器,並開始與應用程序打,不由得注意到,有一個在我的網址一個「JSESSIONID」:

http://localhost:8080/pizzashop/pizzas;jsessionid=0A8EA5D9E8665C8AC80F141C3818F6BA?form

我根本不在乎這個!爲什麼它需要URL中的會話ID?我可以擺脫這個嗎?在那裏有這個似乎不是RESTful。

回答

2

這是標準的JavaEE行爲,由servlet容器規定和控制。它與Spring無關。

請參閱this previous question瞭解爲什麼以及何時創建以及如何避免它。

+0

如何避免它沒有禁用會話是[這裏回答](http://stackoverflow.com/questions/1045668/jsessionid-is-occured-in-all-urls-which-are-generated-by-jstl -curl標籤/ 4019476#4019476)。 – BalusC 2010-11-02 16:18:53

1

我在其他問題中沒有看到這個答案,所以我想解釋它。會話在java中的工作方式,我認爲PHP,當客戶端第一次來到它,它創建一個cookie,並附加JESSIONID到所有使用<c:url/>標記的網址。這樣做的原因是因爲第一次客戶端訪問該頁面時,服務器不知道客戶端是否支持cookie。所以它都有。下一次,因爲它看到cookie,所以它實際上不會再使用URL,因爲它知道cookie工作。

有很多方法可以禁用它。如果您根本不使用會話,則可以通過在context.xml中放入cookie = false來禁用cookie。這隻會禁用會話的Cookie,而不是正常的Cookie。然後你可以使用urlrewrite來確定sessionid。

希望有所幫助。

0

您使用的是什麼應用程序服務器?我知道Weblogic至少會在第一次調用時至少會執行URL編碼會話以及基於cookie的會話,以查看客戶端是否啓用了cookie。如果它在下次調用中找不到與URL會話標識匹配的cookie,它將繼續使用URL中的會話標記。我知道他們什麼時候將我們的公司轉換爲使用Sharepoint進行網絡爬取,並搜索那些長時間抱怨這個問題的windows web工作人員,直到他們終於明白,他們所要做的就是打開cookie會話支持。

相關問題