| 企服解答
session和cookie的區別在以下幾點:1、存儲位置不同;2、存儲容量不同;3、存儲方式不同;4、隱私策略不同;5、有效期上不同;6、服務器壓力不同;7、瀏覽器支持不同;8、跨域支持上不同。
session和cookie的區別
1、存儲位置不同。
cookie的數據信息存放在客戶端瀏覽器上,session的數據信息存放在服務器上。
2、存儲容量不同。
單個cookie保存的數據<=4KB,一個站點最多保存20個Cookie。
對于session來說并沒有上限,但出于對服務器端的性能考慮,session內不要存放過多的東西,并且設置session刪除機制。
3、存儲方式不同。
cookie中只能保管ASCII字符串,并需要通過編碼方式存儲為Unicode字符或者二進制數據。
session中能夠存儲任何類型的數據,包括且不限于string,integer,list,map等。
4、隱私策略不同。
cookie對客戶端是可見的,別有用心的人可以分析存放在本地的cookie并進行cookie欺騙,所以它是不安全的。
session存儲在服務器上,對客戶端是透明對,不存在敏感信息泄漏的風險。
5、有效期上不同。
開發可以通過設置cookie的屬性,達到使cookie長期有效的效果。
session依賴于名為JSESSIONID的cookie,而cookie JSESSIONID的過期時間默認為-1,只需關閉窗口該session就會失效,因而session不能達到長期有效的效果。
6、服務器壓力不同。
cookie保管在客戶端,不占用服務器資源。對于并發用戶十分多的網站,cookie是很好的選擇。
session是保管在服務器端的,每個用戶都會產生一個session。假如并發訪問的用戶十分多,會產生十分多的session,耗費大量的內存。
7、瀏覽器支持不同。
假如客戶端瀏覽器不支持cookie:
cookie是需要客戶端瀏覽器支持的,假如客戶端禁用了cookie,或者不支持cookie,則會話跟蹤會失效。關于WAP上的應用,常規的cookie就派不上用場了。
運用session需要使用URL地址重寫的方式。一切用到session程序的URL都要進行URL地址重寫,否則session會話跟蹤還會失效。
假如客戶端支持cookie:
cookie既能夠設為本瀏覽器窗口以及子窗口內有效,也能夠設為一切窗口內有效。
session只能在本窗口以及子窗口內有效。
8、跨域支持上不同。
cookie支持跨域名訪問,session不支持跨域名訪問。
| 拓展閱讀
Cookie:
Cookie意為“甜餅”,是由W3C組織提出,最早由Netscape社區發展的一種機制。目前Cookie已經成為標準,所有的主流瀏覽器如IE、Netscape、Firefox、Opera等都支持Cookie。
由于HTTP是一種無狀態的協議,服務器單從網絡連接上無從知道客戶身份。怎么辦呢?就給客戶端們頒發一個通行證吧,每人一個,無論誰訪問都必須攜帶自己通行證。這樣服務器就能從通行證上確認客戶身份了。這就是Cookie的工作原理。
Cookie實際上是一小段的文本信息。客戶端請求服務器,如果服務器需要記錄該用戶狀態,就使用response向客戶端瀏覽器頒發一個Cookie。客戶端瀏覽器會把Cookie保存起來。當瀏覽器再請求該網站時,瀏覽器把請求的網址連同該Cookie一同提交給服務器。服務器檢查該Cookie,以此來辨認用戶狀態。服務器還可以根據需要修改Cookie的內容。
查看某個網站頒發的Cookie很簡單。在瀏覽器地址欄輸入javascript:alert (document. cookie)就可以了(需要有網才能查看)。JavaScript腳本會彈出一個對話框顯示本網站頒發的所有Cookie的內容。
Session:
Session是另一種記錄客戶狀態的機制,不同的是Cookie保存在客戶端瀏覽器中,而Session保存在服務器上。客戶端瀏覽器訪問服務器的時候,服務器把客戶端信息以某種形式記錄在服務器上。這就是Session。客戶端瀏覽器再次訪問時只需要從該Session中查找該客戶的狀態就可以了。
如果說Cookie機制是通過檢查客戶身上的“通行證”來確定客戶身份的話,那么Session機制就是通過檢查服務器上的“客戶明細表”來確認客戶身份。Session相當于程序在服務器上建立的一份客戶檔案,客戶來訪的時候只需要查詢客戶檔案表就可以了。
[免責聲明]
文章標題: session和cookie的區別
文章內容為網站編輯整理發布,僅供學習與參考,不代表本網站贊同其觀點和對其真實性負責。如涉及作品內容、版權和其它問題,請及時溝通。發送郵件至36dianping@36kr.com,我們會在3個工作日內處理。