cookie和会话的区别1、cookie数据存储在客户端的浏览器中,会话数据存储在服务器中。
2、cookie不太安全。还有人可以分析本地存储的cookie,欺骗cookie。考虑到安全性,应该使用会话。
3、会话将在服务器上保存一段时间。当访问增加时,它将占用服务器的性能。为了降低服务器的性能,应该使用COOKIE。
4、单个cookie中存储的数据不能超过4K,许多浏览器限制一个站点最多20个cookie。
cookie和session的机制区别1、不同的访问方法。
Cookie只能存储ASCII字符串。如果需要访问Unicode字符或二进制数据,首先需要对它们进行编码。不能在Cookie中直接访问Java对象。要存储稍微复杂的信息,使用Cookie就比较困难。
会话可以访问任何类型的数据,包括但不限于字符串、整数、列表、映射等。Session还可以直接存储JavaBean甚至任何Java类和对象,使用起来非常方便。Session可以看作是一个Java容器类。
2、隐私政策的差异
Cookies存储在客户端阅读器中,对客户端可见。客户端的某些程序可能会窥探、复制甚至修改cookies的内容。会话存储在服务器上,这对客户端是透明的,不存在泄露敏感信息的风险。
如果选择cookie,更好的办法是尽量不要把账号密码等敏感信息写入cookie。最好像Google和百度一样对Cookie信息进行加密,提交到服务器后再解密,保证Cookie中的信息只有自己能读取。而如果选择Session,就简单多了。反正放在服务器上,会话中的任何隐私都能得到有效保护。
3、有效期差异
用过谷歌的人都知道,如果你登录过谷歌,谷歌的登录信息会长期有效。用户不必每次访问都重新登录,谷歌会永久记录用户的登录信息。要达到这种效果,使用Cookie会是更好的选择。只需将Cookie的到期时间属性设置为一个非常非常大的数字。
由于会话依赖于一个名为jsSessionid的Cookie,而CookieJSESSIONID的过期时间默认为1,所以只要关闭阅读器,会话就会失效,所以会话无法达到信息永远有效的效果。使用URL地址重写也不行。而且,如果设置会话的超时时间过长,服务器积累的会话越多,就越容易造成内存溢出。
4、不同的服务器压力
会话保存在服务器端,每个用户将生成一个会话。如果有很多并发用户,会有很多会话,会消耗很多内存。所以像Google、百度、新浪这些高并发访问量的网站,不太可能使用Session来追踪客户对话。
Cookie保存在客户端,不占用服务器资源。如果有很多用户同时阅读,Cookie是一个不错的选择。Cookie可能是谷歌、百度、新浪的唯一选择。
5、不同的浏览器支持
客户端浏览器支持Cookie。如果客户端禁用cookie或不支持cookie,会话跟踪将无效。对于WAP上的应用,传统的Cookie是没有用的。
如果客户端浏览器不支持Cookie,您需要重写会话和URL地址。需要注意的是,Session程序中使用的所有URL都必须重写,否则Session会话跟踪将无效。对于WAP应用,会话URL地址重写可能是其唯一的选择。
如果客户端支持cookie,可以在浏览器窗口和子窗口(将过期时间设置为-1)或所有阅读器窗口(将过期时间设置为大于0的整数)中将cookie设置为有效。但是,会话只能在此阅读器窗口及其子窗口中有效。如果两个浏览器窗口不相关,它们将使用两个不同的会话。(IE8下不同窗口的会话一致性)
6、跨域支持的差异
Cookies支持跨域访问。例如,如果域属性设置为“. biaodianfu.com”,则所有带有“. biaodianfu.com”后缀的域名都可以访问Cookie。跨域Cookie现在广泛应用于网络,如谷歌、百度、新浪等。会话不支持跨域访问。会话仅在他的域名中有效。
仅仅使用Cookie或者Session可能达不到预期的效果。这时候你要尽量同时使用Cookie和Session。Cookie和Session的结合会在实际项目中取得很多意想不到的效果。
标签:Cookie会话Session