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