一、存取方式不同
cookie中只能存儲ASCII字符串。如果需要訪問Unicode字符或二進制數據,則需要先對它們進行編碼。不能直接訪問cookie中的Java對象。如果想存儲稍微復雜的信息,則使用cookie會更加困難。
Session可以訪問任何類型的數據,包括但不限于字符串、整數、列表、Map等。JavaBeans甚至任何Java類、對象等也可以直接存儲在session中,使用起來非常方便。
二、不同的隱私政策
Cookie存儲在客戶端的閱讀器中,并且對客戶端可見??蛻舳说哪承┏绦蚩赡軙Q探、復制甚至修改cookie中的內容。會話存儲在服務器上,對客戶端透明,不存在敏感信息泄露的風險。
三、有效期不同
用過谷歌的人都知道,如果你曾經登錄過谷歌,谷歌的登錄信息是長期有效的。用戶無需每次訪問都重新登錄,谷歌會持久記錄用戶的登錄信息。為了達到這個效果,使用cookies將是一個更好的選擇。您只需要將cookie過期時間屬性設置為一個非常大的數字。
由于Session依賴于名為JSESSIONID的cookie,并且CookieJSESSIONID的過期時間默認為-1,因此只要讀者關閉,Session就會失效,因此Session無法完成永久有效信息的結果。
四、服務器壓力不同
Session保存在服務器端,每個用戶生成一個Session。如果有大量并發用戶,會產生大量會話,消耗大量內存。因此,谷歌、百度、新浪等并發訪問量極高的網站不太可能使用Session來跟蹤客戶會話。
Cookie保存在客戶端,不占用服務器資源。如果有很多用戶同時閱讀,Cookie是一個不錯的選擇。
五、瀏覽器支持不同
客戶端瀏覽器支持Cookie。如果客戶端禁用cookie,或不支持cookie,會話跟蹤將無效。對于Wap上的應用程序,常規cookie沒有用。
如果客戶端瀏覽器不支持cookie,則需要使用Session和URL地址重寫。需要注意的是,所有使用Session程序的URL都必須重寫URL地址,否則Session會話跟蹤將失效。
六、跨域支持不同
Cookie支持跨域訪問,而Session不支持跨域訪問。session只在他所在的域名內有效。