cookie存在於瀏覽器端,是客戶端保存用戶信息的一種機制,用來記錄用戶的一些信息。是經過擴展HTTP協議來實現的,服務器經過在HTTP的響應頭加上一行特殊的指示(set-cookie
)以提示瀏覽器按照指示生成對應的cookie。主要用於如下三個方面。html
cookie的原理:html5
cookie的存活時間程序員
cookie的內容包括:名字、值、過時時間、路徑和域。路徑和域一塊兒構成cookie的做用範圍。若是不設置過時時間,則表示該cookie的生命週期爲瀏覽器會話期間,關閉瀏覽器窗口,cookie就消失,通常保存在內存中(會話cookie
),若是設置了過時時間,該cookie則會被保存到硬盤裏(硬盤cookie
)。數據庫
客戶端的存儲,基於html5,本地存儲。能夠將數據在當前會話中保存下來。刷新頁面數據依然存在,可是關閉頁面後,sessionStorage中的數據就會被清空。跨域
是HTML5標準中新添加的技術。本地存儲,存儲在本地硬盤。除非手動清除,不然永久保存。瀏覽器
session存在於服務器端,依賴於cookie(cookie能夠被認爲的禁止,因此有其餘機制能夠在cookie被禁用時,仍然可以把sessionId傳遞到服務器
)。是服務端保存的一個數據結構,用來跟蹤用戶的狀態。能夠保存在內存、數據庫和文件中。
服務器
session的原理:cookie
關閉瀏覽器會話也不會結束
)並根據sessionId在session池中尋找有沒有該session,沒有則將之添加到session池。(有一個默認存放時間,被取出時會從新設置默認存放時間
)。cookie被禁用時的處理網絡
type="hidden"
),服務器會自動修改表單,添加一個隱藏字段,以便在表單提交時可以把sessionId傳遞迴服務器。session會話結束的兩種狀況:session
session依賴cookie
)。 cookie中只能保存ASCII字符串,若是須要存取Unicode字符或者二進制數據,須要先進行轉碼。
session可以存取任何類型的數據,包括但不限於String、Integer、List、Map等。
cookie存儲在客戶端中,對客戶是可見的,客戶端的一些程序可能會窺探、複製以致修正cookie中的內容。
session存儲在服務器上,對客戶是透明的,不存在敏感信息泄露的風險。
cookie能夠設置過時時間來保存用戶信息在客戶端保存的期限。
session依賴cookie,一旦cookie被清除,session就會失效。或者當客戶端關閉會話,session超時失效致使會話結束。
cookie保管在客戶端,不佔用服務器資源。
session是保管在服務器端的,每一個用戶都會產生一個session。加入併發的用戶很是多,會產生大量的session,消耗大量的內存。
cookie是須要客戶端支持的。假如客戶端禁用了cookie或者不支持cookie,則會話跟蹤會失效。
假如客戶端瀏覽器不支持cookie,則須要運用session及URL地址重寫或者採用表單隱藏域。
假如客戶端支持cookie,則cookie能夠設置爲在本瀏覽器窗口以及子窗口內有效,也可以設爲一切閱讀器窗口內有效。可是session只能在本閱讀器窗口及其子窗口內有效。假如兩個瀏覽器窗口互不相干,它們將運用不一樣的session。
cookie支持跨域名訪問。session不支持跨域名訪問。僅在它所在的域名內有效。
單個cookie保存的數據不能超過4k,session就沒有這個限制。