cookiesessionlocalStoragesessionStorage的区别

Posted L_mj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cookiesessionlocalStoragesessionStorage的区别相关的知识,希望对你有一定的参考价值。

cookie的机制

  • cookie是存储在用户本地终端上的数据。有时也用cookies,指某些网站为了辨别用户身份,进行session跟踪而存储在本地终端上的数据,通常经过加密
  • Cookie是服务器发给客户端的特殊信息,cookie是以文本的方式保存在客户端每次请求一个新的页面的时候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数据存放在客户的浏览器上,单个cookie保存的数据不能超过4kb,很多浏览器都限制一个站点最多保存20个cookie,session数据放在服务器上,大小没有限制。
  2. session中保存的是对象,cookie中保存的是字符串。
  3. cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。
  4. session会在一定时间内保存在服务器上,当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。
  5. 单个cookie保存的数*据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
  6. 建议将登录信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie中。
  7. session保存在服务器,客户端不知道其中的信息;cookie保存在客户端,服务器能够知道其中的信息。
  8. session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到,而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的。
  9. 应用场景:cookie:(1)判断用户是否登陆过网站,以便下次登录时能够实现自动登录(或者记住密码)。如果我们删除cookie,则每次登录必须从新填写登录的相关信息。(2)保存上次登录的时间等信息。(3)保存上次查看的页面(4)浏览计数。session:Session用于保存每个用户的专用信息,变量的值保存在服务器端,通过SessionID来区分不同的客户。(1)网上商城中的购物车(2)保存用户登录信息(3)将某些数据放入session中,供同一用户的不同页面使用(4)防止用户非法登录

web Storage:localStorage与sessionStorage

H5提供了两种在客户端存储数据(不参与和服务器的通信)的方式:

  • localStorage 持久化的本地存储(浏览器关闭重新打开数据依然存在),没有时间限制的数据存储,第二天、第二周或下一年之后,数据依然可用。
  • sessionStorage 针对一个session的本地存储,当用户关闭浏览器窗口后,数据会被删除。

之前这些都是由cookie来完成的,cookie的特点是存储量小,在服务器和客户端之间来回传递,浪费带宽,传输效率不高。并且cookie还需要指定作用域,不可跨域调用。 但是cookie也是不可或缺的,cookie的作用是与服务器进行交互,作为http规范的一部分而存在的,而web Storage仅仅是为了在本地“存储”数据而生 

cookie、localStorage、sessionStorage的区别

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

区别:

  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也是在所有同源窗口中都是共享的 

 

以上是关于cookiesessionlocalStoragesessionStorage的区别的主要内容,如果未能解决你的问题,请参考以下文章