cookie和session的簡介,二者的區別與聯繫,通俗易懂篇,客官請留步~@sdfQQ4の

Cookie

意爲「甜餅」,是由W3C組織提出,最先由Netscape社區發展的一種機制。目前Cookie已經成爲標準,全部的主流瀏覽器如IE、Netscape、Firefox、Opera等都支持Cookie

Cookie的工做原理

因爲HTTP是一種無狀態的協議,服務器單從網絡鏈接上無從知道客戶身份。怎麼辦呢?就給客戶端們頒發一個通行證吧,每人一個,不管誰訪問都必須攜帶本身通行證。這樣服務器就能從通行證上確認客戶身份了

實際應用

  • Cookie其實是一小段的文本信息。客戶端請求服務器,若是服務器須要記錄該用戶狀態,就使用response向客戶端瀏覽器頒發一個Cookie。客戶端瀏覽器會把Cookie保存起來。當瀏覽器再請求該網站時,瀏覽器把請求的網址連同該Cookie一同提交給服務器。服務器檢查該Cookie,以此來辨認用戶狀態。服務器還能夠根據須要修改Cookie的內容

Session

是另外一種記錄客戶狀態的機制,不一樣的是Cookie保存在客戶端瀏覽器中,而Session保存在服務器上。客戶端瀏覽器訪問服務器的時候,服務器把客戶端信息以某種形式記錄在服務器上。這就是Session。客戶端瀏覽器再次訪問時只須要從該Session中查找該客戶的狀態就能夠了

  • 若是說Cookie機制是經過檢查客戶身上的「通行證」來肯定客戶身份的話,那麼Session機制就是經過檢查服務器上的「客戶明細表」來確認客戶身份。Session至關於程序在服務器上創建的一份客戶檔案,客戶來訪的時候只須要查詢客戶檔案表就能夠了

二者的區別

  1. 數據存放位置不一樣:
    cookie數據存放在客戶的瀏覽器上,即網頁緩存
    session數據放在服務器上,即key-value形式,如redis 和mongoDB

  2. 安全程度不一樣:
    任何人可分析存放在本地的cookie,進行cookie欺騙,因此不是很安全,出於安全考慮的話選擇session
  3. 性能使用程度不一樣:
    session會在必定時間內保存在服務器上。訪問增多時,會比較佔用服務器的性能,考慮到減輕服務器性能方面,應當使用cookie【適具體使用場景而定!】
  4. 數據存儲大小不一樣:
    單個cookie保存的數據不能超過4K,不少瀏覽器都限制一個站點最多保存20個cookie,而session則存儲於服務端,瀏覽器對其沒有限制

cookie 和session 的聯繫:

  1. session是經過cookie來工做的redis

  2. session和cookie之間是經過$_COOKIE[‘PHPSESSID’]來聯繫的瀏覽器

  3. 經過$_COOKIE[‘PHPSESSID’]能夠知道session的id,從而獲取到其餘的信息
    在這裏插入圖片描述
    緩存

  • 謝謝閱讀,感恩有你
相關文章
相關標籤/搜索