Cookie、 sessionStorage和 localStorage的区别和使用方法

151 阅读5分钟

Cookie、sessionStorage和localStorage的区别

cookie的内容主要包括:名字、值、过期事件、路径和域。路径与域一起构成cookie的作用范围。若不设置时间,则表示这个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就会消失。这种生命期为浏览器会话期的cookie被称为会话cookie。

会话cookie一般不存储硬盘而是保存在内存里,当然这个行为不是规范规定的。若设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再打开浏览器这些cookie仍然有效直到超过设定的过期时间。对于保存内存里的cookie,不同的浏览器有不同的处理方式session机制。 当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识(称为session id),如果已包含则说明以前已经为此客户端创建过session,服务器就按照session id 把这个session检索出来使用(检索不到,会新建一个),如果客户端请求不包含session id,则为客户端创建一个session并且生成一个于此session相关联的session id,session id的值应该时一个既不会重复,又不会容易被找到规律以仿造的字符串,这个session id将被本次相应中返回给客户端保存,保存这个session id的方式可以采用cookie,这样的交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。

cookie和session的区别

  1. cookie数据存放在客户的浏览器上,session数据放在服务器上
  2. cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,如果考虑到安全的话建议使用session
  3. session会在一定时间内保存在服务器上,当访问增多,会比较占用服务器的性能,如果考虑到性能方面的话,就使用cookie
  4. 单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点最多保存20个cookie
  5. 建议将登录信息等比较重要的信息存放为session,其他信息如果需要保留,服务器能够知道其中的信息
  6. session保存在服务器,客户端不知道其中的信息,cookie保存在客户端,服务器能够知道其中的信息
  7. session中保存的是对象,cookie中保存的是字符串
  8. session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到,而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问的。
  9. cookie是服务端向客户端写入的小的片段信息,cookie信息保存在服务器缓存区,不会在客户端显现。当你第一次登录一个网站,服务器向你的及其写得片段信息。可以在internext选项中找到存放的cookie的文件夹。如果不删除,cookie就一直在这个文件夹中。
  10. session需要借助cookie才能正常工作。如果客户端完全禁止cookie,session将失效。 但是如果服务器端启用了url编码,也就是用 URLEncoder.encode()把所有的url编码了,则会在url后面出现如下类似的东西 index.jsp:jsessionid=fdsaffjdlks;jaf;lkdjsf 服务器通过这个进行session的判断. 
  11. Cookie支持跨域名访问,例如将domain属性设置为“.biaodianfu.com”,则以“.biaodianfu.com”为后缀的一切域名均能够访问该Cookie。跨域名Cookie如今被普遍用在网络中,例如Google、Baidu、Sina等,而Session则不会支持跨域名访问。Session仅在他所在的域名内有效。仅运用Cookie或者仅运用Session可能完成不了理想的效果。这时应该尝试一下同时运用Cookie与Session。Cookie与Session的搭配运用在实践项目中会完成很多意想不到的效果。

sessionStorage、localstorage和cookie的区别

> 共同点:都是保存在浏览器端、且同源的

区别

1、cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递,而sessionStorage和localStorage不会自动把数据发送给服务器,仅在本地保存。cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下 
2、存储大小限制也不同,cookie数据不能超过4K,同时因为每次http请求都会携带cookie、所以cookie只适合保存很小的数据,如会话标识。sessionStorage和localStorage虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大 
3、数据有效期不同,sessionStorage:仅在当前浏览器窗口关闭之前有效;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie:只在设置的cookie过期时间之前有效,即使窗口关闭或浏览器关闭 
4、作用域不同,sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;localstorage在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的 
5、web Storage支持事件通知机制,可以将数据更新的通知发送给监听者 
6、web Storage的api接口使用更方便