簡體   English   中英

在2個子域之間共享會話數據

[英]Share session data between 2 subdomains

我使用tomcat 7.0.6與jdk 1.6.0_22

是否可以使用公共子域(例如a.mydomain.com和b.mydomain.com)在2個不同的域之間共享會話數據?

使用默認的java servlet,a.mydomain.com和b.mydomain.com會獲得不同的會話,但是無法為mydomain.com中的所有子域創建共享會話嗎?

問題是我不直接控制commen子域(mydomain.com)所以我不能從mydomain.com提供任何servlet

將有問題的webapp的<Context>元素的sessionCookieDomain屬性設置為.mydomain.com (注意前導點,這非常重要)。 這將允許webbrowser在所有子域之間共享cookie。

如果您實際上有多個webapp上下文並且您想要在它們之間共享會話,那么您還需要將有問題的webapps的<Context>元素的sessionCookiePath屬性設置為/

簡而言之:

<Context sessionCookieDomain=".mydomain.com" sessionCookiePath="/">

也可以看看:


對於Tomcat 6用戶:請注意,這是在Tomcat 6.0.27中引入的。 對於那些無法升級的人,您需要一個Valve來修改cookie域,最后結合/conf/server.xml<Connector>元素中的emptySessionPath屬性,以獲得您有多個webapp上下文的情況我想分享會議。

Servlet Spec 3.0(這是Tomcat 7支持的)通過在SessionCookieConfig上調用setDomain來實現這一點。

詳情請訪問: http//download.oracle.com/javaee/6/api/javax/servlet/SessionCookieConfig.html

您可以使用ServletContextListner在webapp初始時以編程方式獲得SessionCookieConfig - 或者您應該能夠在web.xml中將其設置為值。

您可以使用cookie創建自己的會話實現。 使用cookie和服務器端數據庫或文件處理會話(在大多數服務器端語言中)。 您創建一個令牌(在時間戳上使用md5)並將其與所有會話變量一起保存在文件或數據庫中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM