Cookie 和 Session的區別

cookies和session這兩個東西常常會在面試當中問到,算是比較基礎的知識,可是仍是須要作一下深刻理解。面試

Session

  1. Session的概念
    Session:在計算機中,尤爲是在網絡應用當中,被稱爲「會話控制」。Session
    對象存儲特定用戶會話所需的屬性及配置信息。

    當程序須要爲某個客戶端的請求建立一個session時,服務器首先檢查這個客戶端的請求裏是否已包含了一個session標識(稱爲SessionID),若是已包含則說明之前已經爲此客戶端建立過session,服務器就按照SessionID把這個session檢索出來使用(檢索不到,會新建一個),若是客戶端請求不包含SessionID,則爲此客戶端建立一個session而且生成一個與此session相關聯的SessionID,SessionID的值應該是一個既不會重複,又不容易被找到規律以仿造的字符串,用來惟一標識session,這個SessionID將會在本次響應中返回給客戶端保存。跨域

  2. Session的生命週期
    Session保存在服務器端,爲了獲取更高的存取速度,服務器通常會把Session放在內存裏面,每一個用戶都會有一個獨立的Session。若是Session裏面的內容太過複雜,當大量的用戶訪問服務器時,可能會致使內存溢出,因此咱們的Cookie內容應當適當的精簡。當咱們第一次訪問服務器時,服務器會給咱們自動建立一個Session,生成session後,只要用戶繼續訪問,服務器就會更新session的最後訪問時間,而且維護這個session。當用戶訪問服務器一次,不管是否讀寫了session,服務器都會認定這個session活躍(active)了一次。

    當愈來愈多的用戶訪問咱們的服務器時,所以咱們的session會愈來愈多。爲了防止內存溢出,服務器會把長時間沒有活躍的Session刪除。這個時間就是session的超時時間,過了超時時間,咱們的session就會自動失效瀏覽器

Cookie

  1. Cookie概念
    Cookie 能夠翻譯爲「小甜品,小餅乾」 ,Cookie在網絡系統中幾乎無處不在,當咱們瀏覽之前訪問過的網站時,網頁中可能會出現 :你好XXX,這會讓咱們感受很親切,就好像吃了一個小甜品同樣。這實際上是經過訪問主機中的一個文件來實現的,這個文件就是 Cookie。在Internet 中,Cookie 其實是指小量信息,是由 Web服務器建立的,將信息存儲在用戶計算機上的文件。通常網絡用戶習慣用其複數形式 Cookies,指某些網站爲了辨別用戶身份、進行Session 跟蹤而存儲在用戶本地終端上的數據,而這些數據一般會通過加密處理。
  2. Cookie的不可跨域名性
    不少網站都會使用cookie,不一樣瀏覽器採用不一樣的方式保存Cookie,並且每一個網站的Cookie只可以被對應的網站使用。意思就是說當瀏覽器訪問Baidu時,只會帶Baidu的cookie,而不會帶其餘網站的Cookie,這就是Cookie的不可跨域名性。
    Cookie在客戶端是由瀏覽器來管理的。瀏覽器能夠保證各個網站只能操做各個網站的Cookie,從而保證用戶的隱私安全。
  3. Cookie的內容
    cookie的主要內容包括名字,值,過時時間,域和路徑。域和路徑一塊兒構成cookie的做用範圍。cookie若是不設置過時時間的話,則表示這個cookie的生命期爲瀏覽器會話期間,關閉瀏覽器,這個cookie就會消失。這種生命期爲瀏覽器會話期的Cookie被稱爲會話cookie。會話Cookie通常不保存在硬盤上而是保存在內存裏,這種行爲並非規範規定的。若是Cookie設置了過時時間,瀏覽器就會把cookie保存到硬盤上,即便瀏覽器關閉了,這些cookie仍是會一直有效直到過了過時時間。
  4. Cookie的修改和刪除
    Cookie並無提供修改和刪除操做,要想修改某一個Cookie只須要新建一個同名的Cookie,添加到請求裏面去覆蓋原來的Cookie。刪除也是如此,只須要將要刪除的Cookie的過時時間設置成如今時間的以前就能夠了,而後再覆蓋原來的Cookie。須要注意的是:要修改的和要刪除Cookie的名字(name),域名(domain)和路徑(Path)等除了值(value)和過時時間這兩個屬性以外必須和原來徹底同樣。不然,瀏覽器就會將請求裏面的Cookie設爲新的Cookie,至關於覆蓋失敗,也就是刪除和修改失敗了。

Session和Cookie的區別

  1. cookie數據存放在客戶端,session數據放在服務器上。
  2. cookie不是很安全,別人能夠分析存放在本地的Cookie並進行Cookie欺騙考慮到安全應當使用session。
  3. session會在必定時間內保存在服務器上。當訪問增多,會比較佔用你服務器的性能考慮到減輕服務器性能方面,應當使用Cookie。
  4. 單個Cookie保存的數據長度不能超過4K,不少瀏覽器都限制一個網址最多保存20個cookie。
相關文章
相關標籤/搜索