不同版本IE下session管理的區別

2021-08-26 10:13:58 字數 1961 閱讀 8601

一 . 理解 session 原理

session 機制是一種在 web 伺服器上用於儲存會話資訊的機制,一般使用雜湊表( hashtable 、 hashmap 等)。

會話可以理解為瀏覽器和伺服器的的通訊過程,一次會話期間, session 物件應該是不會變化的,除非某些操作使得伺服器上改變了 session 物件。

web 伺服器是如何保證一次會話 session 不變的呢。每次請求都有乙個隱藏的引數會傳遞到伺服器,這個引數就是 sessionid ,這個值會儲存在 cookie 中,如果禁用了 cookie ,則會同 url 重寫的方式,跟在 url 位址後面。

伺服器收到這個 sessionid ,每次都會進行比較是不是和現存在的是同乙個,作出不同的判斷。

二 .session 使用場景

針對同一域中的操作比較:

新視窗開啟方式 ie6           ie8

ctrl+n               

共享 session   共享 session

winodw.open         

共享 session   共享 session

鏈結 共享 session   共享 session

開啟 ie              

新建 session   共享 session

建立標籤頁

無 共享 session

1. 開啟 ie 時多個瀏覽器視窗(不是標籤頁)

在 ie6 中,不同方式會有不同的行為,在 ie8 中,不同視窗共享乙個會話。如果要使 ie8 和 ie6 在開啟 ie 時,表現一致,在 ie8 啟動引數中加入 -nomerge 。

2. 同一使用者同時開啟多個相同的頁面

此時瀏覽器會共享 session ,如果這個頁面操作,伺服器上有更新 session 物件的資訊,可能會導致 session 資訊會被覆蓋。舉例:

開啟頁面 page.jsp 後,輸入資訊,然後提交,提交時從 session 取 page 的值。

假設某頁面 page.jsp 每次開啟之後,都會根據資料設定 session 。

第一次的資料值為 value1 :

session.setattribute("page","value1");

第二次的資料值為 value2 :

session.setattribute("page","value2");

同時開啟兩個 page.jsp ,第一次開啟之後未提交,第二次開啟之後也未提交。

此時,如果回到第乙個頁面,並提交,取到的 page 值是 value2 ,資料有異常。

回到第二個頁面,並提交,取到的 page 值是 value2 ,資料正常。

三 . 規避措施

1. 禁止同一頁面同時開啟多次

2.1 條件不滿足的情況下,不使用 session 儲存資料,考慮使用頁面表單的 hidden 域傳值

3. 對於 get 請求,可以使用 url 重寫,加入引數,敏感資訊需要加密不能使用

本文同步發表於www.devtutor.com(西蜀部落格-關注網際網路、移動網際網路的技術部落格)

本文出處:www.devtutor.com

IE不同版本的相容問題

作為一名前端開發人員,跟ie的接觸可是不少啊。這個大家都懂得,我也不多說了。今天又用到了 最近對ie6的相容寫的比較多 所以我決定,將常用的相容匯集總結下。下面我總結了一些ie下的hack ie6獨有 ie6,ie7 0ie8 9ie8 9 配合 media使用的hack如下 media 0scre...

不同IE下的css寫法

css hack 是在標準 css 沒辦法相容各瀏覽器顯示效果時才會用上的補救方法,在各瀏覽器廠商解析 css 沒有達成一致前,我們只能用這樣的方法來完成這樣的任務。最近的專案要針對 firefox 瀏覽器的css樣式進行 特別處理,可愛的 firefox 居然不支援 text overflow 屬...

Android 不同版本下Bitmap建立差異

1.問題描述 乙個雪花效果,在android4.0以下系統正常執行,但是在android4.1上異常退出。2.問題定位 看一段 private bitmap mflakeimage null private bitmap mflakeimagetemp null mflakeimagetemp bi...