cookie 和session 的差異詳解
這些都是基礎知識,不過有必要做深入了解。先簡單介紹一下。
二者的定義:
當你在瀏覽網站的時候,WEB 伺服器會先送一小小資料放在你的電腦上,Cookie 會幫你在網站上所打的文字或是一些選擇,
都紀錄下來。當下次再光臨同一個網站,WEB 伺服器會先看看有沒有它上次留下的Cookie 資料,有的話,就會依據Cookie
裡的內容來判斷使用者,送出特定的網頁內容給你。 Cookie 的使用很普遍,許多有提供個人化服務的網站,都是利用Cookie
來辨識使用者,以方便送出使用者量身訂做的內容,像是Web 介面的免費email 網站,都要用到Cookie。
具體來說cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是伺服器端保持狀態的方案。
同時我們也看到,由於採用伺服器端保持狀態的方案在客戶端也需要保存一個標識,所以session機制可能需要藉助於cookie機制
來達到保存標識的目的,但實際上它還有其他選擇。
cookie機制。正統的cookie分發是透過擴展HTTP協定來實現的,伺服器透過在HTTP的回應頭中加上一行特殊的指示以提示
瀏覽器按照指示產生對應的cookie。然而純粹的客戶端腳本如JavaScript或VBScript也可以產生cookie。而cookie的使用
是由瀏覽器依照一定的原則在後台自動傳送給伺服器的。瀏覽器檢查所有儲存的cookie,如果某個cookie所宣告的作用範圍
#大於等於將要要求的資源所在的位置,則把該cookie附在請求資源的HTTP請求頭上傳送給伺服器。
cookie的內容主要包括:名字,值,過期時間,路徑和域。路徑與域一起構成cookie的作用範圍。若不設定過期時間,表示這
個cookie的生命期為瀏覽器會話期間,關閉瀏覽器窗口,cookie就會消失。這種生命期為瀏覽器會話期的cookie被稱為會話cookie。
會話cookie一般不是儲存在硬碟上而是保存在記憶體裡,當然這種行為並不是規範規定的。若設定了過期時間,瀏覽器就會把cookie
儲存到硬碟上,關閉後再次開啟瀏覽器,這些cookie仍然有效直到超過設定的過期時間。儲存在硬碟上的cookie可以在不同的瀏
覽器進程間共用,例如兩個IE視窗。而對於保存在記憶體裡的cookie,不同的瀏覽器有不同的處理方式
session機制。 session機制是一種伺服器端的機制,伺服器使用一種類似散列表的結構(也可能就是使用散列表)來保存資訊。
當程式需要為某個客戶端的請求建立一個session時,伺服器首先檢查這個客戶端的請求裡是否已包含了一個session標識
(稱為session id),如果已包含則說明以前已經為此客戶端創建過session,伺服器就按照session id把這個session檢索出來
使用(檢索不到,會新建一個),如果客戶端請求不包含session id,則為此客戶端建立一個session並且產生一個與此session相
關聯的session id,session id的值應該是一個既不會重複,又不容易被找到規律以仿造的字串,這個session id將會在本次回應
中傳回給客戶端保存。儲存這個session id的方式可以採用cookie,這樣在互動過程中瀏覽器可以自動的按照規則把這個標識傳送給
伺服器。一般這個cookie的名字都是類似SEEESIONID。但cookie可以被人為的禁止,則必須有其他機制以便在cookie被禁止時
仍然能夠把session id傳回伺服器。
常被使用的一種技術叫做URL重寫,就是把session id直接附加在URL路徑的後面。還有一種技術叫做表單隱藏欄位。就是伺服器
會自動修改表單,加入一個隱藏字段,以便在表單提交時能夠把session id傳回伺服器。如:
<form name="testform" action="/xxx"> <input type="hidden" name="jsessionid" value="ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764"> <input type="text"> </form>
In fact, this technique can be simply replaced by applying URL rewriting to the action.
The difference between cookies and sessions:
1. Cookie data is stored on the client's browser, and session data is placed on the server.
2. Cookies are not very safe. Others can analyze the COOKIE stored locally and conduct COOKIE deception
Considering security, session should be used.
3. The session will be saved on the server within a certain period of time. When access increases, it will take up more of your server's performance
Considering reducing server performance, COOKIE should be used.
4. The data saved by a single cookie cannot exceed 4K. Many browsers limit a site to save up to 20 cookies.
5. So personal suggestion:
Store important information such as login information as SESSION
If other information needs to be retained, it can be placed in COOKIE
This article explains cookies and sessions For a detailed explanation of the difference, please pay attention to the php Chinese website for more related content.
Related recommendations:
Two tree array constructions without recursion Function
#Convert HTML to Excel, and realize printing and downloading functions
以上是cookie 和session 的差異詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!