當應用程式在多個分頁中開啟時,Firefox (3.6.18) 會共用會話。我想防止這種情況發生,在每個開啟的選項卡上都應該有一個新會話,以便會話中的資料狀態不應該被損壞。
在這方面的任何幫助將不勝感激。
答案1
Firefox 甚至您提到的版本都沒有問題。我認為您對瀏覽器如何追蹤會話 cookie 的理解有點不完整。瀏覽器始終會向伺服器發送請求,其中包含發出請求的伺服器網域的 cookie。這與發出 cookie 的瀏覽器標籤無關。
如果您不希望跨選項卡使用會話 cookie,則可以使用頁面特定識別碼來區分伺服器向用戶端呈現的每個頁面。當相應的選項卡發回請求時,它也必須發送頁面特定的標識符,以便伺服器可以區分跨選項卡發出的請求。如果使用者將帶有此頁面特定標識符的連結從一個選項卡複製到另一個選項卡,這對您沒有幫助。
如果您想繼續使用特定於頁面的標識符,那麼您所要做的就是解析頁面標識符的傳入請求參數。如果不存在,則您可以使用 PRNG 產生一個,並在頁面中發送包含此頁面標識符的回應(例如,作為表單或 URL 中的隱藏字段,但絕不作為 cookie)。
注意:如果您正在尋找特定於瀏覽器的功能,Firefox 3 和 4 不具備 IE9 中的「新會話」功能,該功能可讓使用者跨瀏覽器視窗建立新會話。此外,如果伺服器使用持久性 cookie 來追蹤用戶,則 IE9 的「新會話」功能似乎不起作用。
答案2
你不能,
您可以重寫 URL 並將 jSessionId 附加到每個 URL 並手動追蹤它。但這不是做事的方式