session和cookie的理解

session和cookie的理解:web

當前問題現狀:瀏覽器

想象一個包含「頁面A」和「頁面B」的網站,假設一個遊客先看了A,而後在跳轉到B。HTTP是無狀態協議,所以,若是一個典型的web服務器正在管理這個站點,那麼當訪問者瀏覽到B時,在A上手機的任何知識都會丟失,換句話說,B不能利用訪問者提供的任何信息。安全

爲了繞過這個限制,應用服務器會檢測訪問者(即遊客哈)什麼時候首次進入網站。此時,應用服務器將啓動此訪問者的會話。在前面的示例中,當訪問者請求A時,應用服務器將啓動會話。網站設計人員可使用A來收集訪問者的信息,並將這些信息存儲在會話變量中。會話變量中的信息對全部後續頁面均可用。例如,若是路人甲向A提供他的年齡,A的設計人員將年齡寫入一個session變量,那麼B能夠很容易地訪問路人甲的年齡。服務器

會話變量包含會話期間可用的值。當會話結束時,應用服務器將銷燬與會話相關的會話變量。每一個會話變量都消耗應用服務器上的內存,所以建立沒必要要的會話變量會影響性能。cookie

session:session

由web站點建立/維護的會話變量性能

在建立會話時,WebCenter站點會自動建立如下會話變量:網站

會話變量url

釋義spa

SessionVariables.currentUser

遊客登陸的id

SessionVariables.currentAcl

該遊客所屬的全部ACLs。若是遊客沒有顯式登陸,則默認ACL爲瀏覽器。

SessionVariables.username

此遊客登陸的用戶名。若是遊客沒有顯式登陸,默認用戶名爲DefaultReader。

SessionVariables.iniFile

包含web站點屬性的文件的名稱

舉例「登陸和退出」:

當遊客第一次訪問站點時,Web站點會建立一個會話,並在遊客中隱式地將其日誌記錄爲DefaultReader。在會話期間,若是遊客顯式地登陸,Web站點會自動更新SessionVariables.currentUser,SessionVariables.currentAcl,SessionVariables.username。登陸不會影響任何其餘會話變量的值。換句話說,若是頁面在登陸以前建立會話變量,那麼這些值在登陸以後仍然有效。當一個遊客顯式地註銷時,Web所生成的會話變量會自動恢復到在登陸以前所持有的值。

例如,考慮順序以下:

一、遊客首先訪問一個頁面,username的值是DefaultReader。

二、遊客登陸爲「路人甲」,那麼username的值就是「路人甲」。

三、若是「路人甲」註銷,則username的值更新爲DefaultReader。

session的生命週期:

     當訪問者第一次訪問您的網站時,會話就開始了。下列任何一項發生時,會議結束:

一、訪問者關閉瀏覽器。

二、會話超時了。Web服務器站點使用timeout屬性設置應用服務器中的會話超時值。若是將此屬性設置爲300,那麼用戶會話將在300秒或5分鐘內無效。

三、系統管理員中止應用程序服務器。(也就是停掉服務)

cookie:

cookie是應用程序(即web服務站點)寫入遊客瀏覽器的字符串。cookie存儲會話之間的遊客信息。遊客的瀏覽器將該字符串寫入遊客磁盤上的一個特殊cookie文件。當遊客返回到您的網站時,遊客的瀏覽器將cookie的副本發送回設置它的web服務器。一旦建立了一個cookie,它就能夠做爲一個變量用於頁面上。

例如,您的應用程序可能將遊客最喜歡的運動隊存儲在一個cookie中。而後,當遊客返回時,應用程序能夠檢索cookie並使用它的信息在橫幅中顯示這些信息。

Cookie屬性:

屬性

name

cookie的名稱。它還充當包含cookie值的傳入變量的名稱。

重要提示:Web站點頁面上下文中的cookie被視爲變量。所以,當cookie和資產屬性共享相同的名稱時,它們被視爲相同的變量。

expiration

時間,以秒爲單位,此後cookie再也不被髮送到web服務器。

security

可選地在cookie上設置安全性。

URL

限制僅在此URL上發送cookie

Domain

限制只將cookie發送到指定域中的url。

由於cookie中的信息是關鍵的,cookie是一種安全威脅,一些遊客設置瀏覽器來拒絕存儲cookie。應用程序必須爲此作好準備。

Cookie的生命生命週期:

一、當再也不須要cookie時,能夠刪除它們。

二、過時

提示和技巧:

一、在集羣中,必須跨集羣成員複製會話狀態。在集羣中,儘可能將會話大小保持在最小;不要爲每一個客戶端存儲超過2千字節的會話數據。

二、肯定合理的會話超時值。設置太大的超時會佔用系統資源。設置過小會迫使訪問者以惱人的頻率登陸。

三、客戶端禁用cookie則可url訪問地址後加上會話ID

例如:FlushServer?reset=true&username=username&password=password&

ssid=sessionID

原創,轉載請註明出處微笑空間站

相關文章
相關標籤/搜索