我在Jetty上有一個GWT應用程序。配置不同的訪問端口等後,用戶可以在同一臺服務器上多次啓動該應用(例如2次)。我們注意到,當從同一個瀏覽器訪問這兩個不同的實例時,它們會干涉每個實例,例如,將其他會話踢出。同一服務器上不同的GWT應用程序runnnig在相同的瀏覽器上互相干擾
如果從不同的瀏覽器訪問,例如ie和firefox或chrome,則沒有問題。
當然,如果兩個應用程序從不同的服務器上運行,沒有問題。
有沒有人看到過相同的行爲?如何解決這個問題?
我在Jetty上有一個GWT應用程序。配置不同的訪問端口等後,用戶可以在同一臺服務器上多次啓動該應用(例如2次)。我們注意到,當從同一個瀏覽器訪問這兩個不同的實例時,它們會干涉每個實例,例如,將其他會話踢出。同一服務器上不同的GWT應用程序runnnig在相同的瀏覽器上互相干擾
如果從不同的瀏覽器訪問,例如ie和firefox或chrome,則沒有問題。
當然,如果兩個應用程序從不同的服務器上運行,沒有問題。
有沒有人看到過相同的行爲?如何解決這個問題?
如果您的服務器使用cookie來維護會話,並且兩個瀏覽器實例共享相同的一組cookie,那麼當第二個cookie登錄時,它必須踢出第一個 - 同一個cookie如何具有多個值?
選項嘗試:
如果他們訪問同一個cookie,他們應該有兩個會話正常工作 - 即您提到的第二個選項應該工作。 –
沒錯,但顯然這不起作用,否則我們不會讀這個問題;)。 –
每個不同的登錄信息都有不同的會話信息。從瀏覽器的角度來看,它使用cookie來跟蹤名爲「JSESSIONID」的會話,第二次登錄會清除第一個cookie。第二和第三都不適用於我們,無論誰登錄,瀏覽器總是獲得相同的cookie名稱「JSESSIONID」,並且它總是從任何人和任何人身上抹去以前的內容。我不知道是否有一些解決方法。 – huican
JSESSIONID用於防止跨站點請求僞造攻擊。檢查你如何設置這個cookie。通常情況下,你會設置這樣的:
<script type="text/javascript">
var info = "<%=XsrfTokenUtil.getToken(request.getSession().getId()) %>";
</script>
如果你這樣做,你應該得到每個瀏覽器窗口同樣的道理(值),只要你有一個會話。試着找出爲什麼你每次都設定一個新值。
另外,如果你需要有多個窗口的能力,可以允許重複餅乾XsrfTokenUtil:
final Cookie sessionCookie = getCookie(cookies, "JSESSIONID", false);
替換真假允許重複的餅乾。
對於
你是什麼意思「踢出其他會議」? –
當user1登錄到第一個實例時,在user2登錄到第二個實例後,user1會話將被註銷到登錄頁面。我剛剛發現我的問題幾乎與http://stackoverflow.com/questions/19566072/multiple-instance-of-a-gwt-application-runing-on-the-same-server-on-different-to – huican
你使用什麼認證?一個會話不會殺死其他會話,除非您在代碼中的某個地方執行該操作。 –