cookie,session以及localStorage,sessionStorage的区别

1. cookie和session

浏览器的缓存机制提供了可以将用户数据存储在客户端上的方式,可以利用cookie,session等跟服务端进行数据交互。

cookie和session都是用来跟踪浏览器用户身份的会话方式。

a、保持状态:cookie保存在浏览器端,session保存在服务器端。

b、使用方式:

cookie机制:如果不在浏览器中设置过期事件,cookie被保存在内存中,生命周期随浏览器的关闭而结束,这种cookie简称为会话cookie。如果在浏览器中设置了cookie的过期事件,cookie会被保存在硬盘中,关闭浏览器后,cookie数据仍然存在,直到过期事件结束才消失。cookie是服务端发给客户端的特殊信息,cookie是以文本的方式保存在客户端,每次请求时都带上它。

session机制:当服务器收到请求需要创建session对象时,首先会检查客户端请求中是否包含sessionid。如果有sessionid,服务器将根据该id返回对应session对象。如果客户端请求中没有sessionid,服务器会创建新的session对象,并把sessionid在本次响应中返回给客户端。通常使用cookie方式存储sessionid到客户端,在交互中浏览器按照规则将sessionid发送给服务器。如果用户禁用cookie,则要使用URL重写,可以通过response.encodeURL(url)进行实现;API对encodeURL的结束为,当浏览器支持cookie时,url不做任何处理;当浏览器不支持cookie的时候,将会重写URL将sessionid拼接到访问地址后。

c、存储的大小:单个cookie保存的数据不能超过4kb;session大小没有限制。

d、存储内容:cookie只能保存字符串类型,以文本的方式;session能支持任何类型的对象(session中可含有多个对象)。

e、安全性:session的安全性大于cookie。原因如下:

① sessionid存储在cookie中,若要攻破session首先要攻破cookie;

② sessionid是要有人登录,或者启动session_start才会有,所以攻破cookie也不一定能得到sessionid;

③ 第二次启动session_start后,前一次的sessionid就是失效了,session过期后,sessionid也随之失效;

④ sessionid是加密的。

综上所述,攻击者必须在短时间内攻破加密的sessionID,这很难。

f、应用场景:

cookie:

     (1)  判断用户是否登录过网站,以便下次登录时能够实现自动登录(或者记住密码)。

     (2)  保存上次登录的时间等信息。

     (3)  保存上次查看的页面。

     (4)  浏览计数。

session:

     (1)  网上商城中的购物车。

     (2)  保存用户登录信息。

     (3)  将某些数据放入session中,供同一用户的不同页面使用。

     (4)  防止用户非法登录。

g、缺点:

cookie:

     (1)  大小受限。

     (2)  用户可以操作(禁用)cookie,使功能受限。

     (3)  安全性较低。

     (4)  有些状态不可能保存在客户端。

     (5)  每次访问都要传送cookie给服务器,浪费带宽。

     (6)  cookie数据有路径(path)的概念,可以限制cookie只属于某个路径下。

   session:

     (1)  session保存的东西越多,就越占用服务器内存,对于用户在线人数较多的网站,服务器的内存压力会比较大。

     (2)  依赖于cookie(sessionID保存在cookie),如果禁用cookie,则要使用URL重写,不安全。

     (3)  创建session变量有很大的随意性,可随时调用,不需要开发者做精确地处理,所以,过度使用session变量将会导致代码不可读而且不好维护。

2. Web Storage

Web Storage的概念和cookie相似,区别是它是为了更大容量存储设计的,cookie的大小是受限的,并且每次请求一个新的页面的时候cookie都会被发送过去,这样无形中浪费了带宽,另外cookie还需要指定作用域,不可跨域调用。

除此之外,Web Storage拥有setItem,getItem,removeItem,clear等方法,不像cookie需要前端开发者自己封装setCookie,getCookie,具有一定复杂性。

Web Storage的优点大致如下:

(1)存储空间更大:cookie为4KB,而WebStorage是5MB;

(2)节省网络流量:Web Storage不会传送到服务器,存储在本地的数据可以直接获取,也不会像cookie一样每次请求都会传送到服务器,所以减少了客户端和服务器端的交互,节省了网络流量;

(3)对于那种只需要在用户浏览一组页面期间保存而关闭浏览器后就可以丢弃的数据,sessionStorage会非常方便;

(4)快速显示:有的数据存储在Web Storage上,再加上浏览器本身的缓存。获取数据时可以从本地获取会比从服务器端获取快得多,所以速度更快;

(5)安全性:Web Storage不会随着HTTP header发送到服务器端,所以安全性相对于cookie来说比较高一些,不会担心截获,但是仍然存在伪造问题;

(6)Web Storage提供了一些方法,数据操作比cookie方便;

   setItem (key, value) ——  保存数据,以键值对的方式储存信息。

   getItem (key) ——  获取数据,将键值传入,即可获取到对应的value值。

   removeItem (key) ——  删除单个数据,根据键值移除对应的信息。

   clear () ——  删除所有的数据。

   key (index) —— 获取某个索引的key。

HTML5的Web Storage提供了两种API:localStorage(本地存储)和sessionStorage(会话存储)。

3. localStorage和sessionStorage的区别

a、生命周期:

 localStorage的生命周期是永久的,关闭页面或浏览器之后localStorage中的数据也不会消失。localStorage除非主动删除数据,否则数据永远不会消失。

 sessionStorage的生命周期是在仅在当前会话下有效。sessionStorage引入了一个“浏览器窗口”的概念,sessionStorage是在同源的窗口中始终存在的数据。只要这个浏览器窗口没有关闭,即使刷新页面或者进入同源另一个页面,数据依然存在。但是sessionStorage在关闭了浏览器窗口后就会被销毁。同时独立的打开同一个窗口同一个页面,sessionStorage也是不一样的。

b、存储大小:localStorage和sessionStorage的存储数据大小一般都是:5MB。

c、存储位置:localStorage和sessionStorage都保存在客户端,不与服务器进行交互通信。

d、存储内容类型:localStorage和sessionStorage只能存储字符串类型,对于复杂的对象可以使用ECMAScript提供的JSON对象的stringify和parse来处理。

e、获取方式:localStorage:window.localStorage;   ;sessionStorage:window.sessionStorage;  。

f、 应用场景:localStoragese:常用于长期登录(+判断用户是否已登录),适合长期保存在本地的数据。sessionStorage:敏感账号一次性登录。

原文地址:https://www.cnblogs.com/zzh0318/p/11986354.html

时间: 2024-11-06 11:52:59

cookie,session以及localStorage,sessionStorage的区别的相关文章

cookie,session,token的定义及区别

参考了很多文章总结的. 1.cookie(储存在用户本地终端上的数据) 服务器生成,发送给浏览器,浏览器保存,下次请求同一网站再发送给服务器. 2.session(会话) a.代表服务器与浏览器的一次会话过程,这个过程是连续的,也可以时断时续的. b.cookie中存放着一个sessionID.请求时会发送这个ID. c.session因为请求(request对象)而产生. d.session是一个容器,可以存放会话过程中的任何对象. e.session的创建和使用总在服务端,而浏览器从来都没得

cookie,localStorage,sessionStorage的区别

一.概念 Cookie 什么是Cookie —— Cookie 是一些数据, 存储于你电脑上的文本文件中. localStorage 什么是 localStorage —— localStorage 是指将信息数据存储在客户端本地的硬件上,即使浏览器被关闭了,信息数据同样存在 sessionStorage 什么是 sessionStorage —— sessionStorage 是指将信息数据存储在session对象中,所以当浏览器关闭后,sessionStorage也随之清空 二.如何使用(一

简单谈谈Cookie,Session与Cache之间的区别

一 摘要 Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间.而SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一 SessionID提交到服务器端,来存取Session数据.这一过程,是不用开发人员干预的.所以一旦客户端禁用Cookie,那么Session也会失效. 服务器也可以通过URL重写的方式来传递Sessi

Cookie,Session和Token机制和区别.

1.背景介绍 由于HTTP是一种无状态协议,服务器没有办法单单从网络连接上面知道访问者的身份,为了解决这个问题,就诞生了Cookie Cookie实际上是一小段的文本信息.客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie 客户端浏览器会把Cookie保存起来.当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器.服务器检查该Cookie, 以此来辨认用户状态.服务器还可以根据需要修改Cookie的内容. 实际就是颁发

Cookie、session和localStorage、以及sessionStorage之间的区别

一.Cookie.session和localStorage的区别 cookie的内容主要包括:名字.值.过期时间.路径和域.路径与域一起构成cookie的作用范围.若不设置时间,则表示这个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就会消失.这种生命期为浏览器会话期的cookie被称为会话cookie. 会话cookie一般不存储在硬盘而是保存在内存里,当然这个行为并不是规范规定的.若设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再打开浏览器这些cookie仍

cookie、session、localStorage、sessionStorage的区别

cookie的机制 cookie是存储在用户本地终端上的数据.有时也用cookies,指某些网站为了辨别用户身份,进行session跟踪而存储在本地终端上的数据,通常经过加密. Cookie是服务器发给客户端的特殊信息,cookie是以文本的方式保存在客户端,每次请求一个新的页面的时候cookie都会被发送过去. cookie的内容主要包括:名字.值.过期时间.路径和域.路径与域一起构成cookie的作用范围.若不设置时间,则表示这个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cook

cookie、session、localStorage、sessionStorage

(1)cookie 是一种早期的客户端存储机制.适合存储少量文本数据(部分浏览器任然对单个cookie有4KB限制).不仅如此,任何以cookie形式存储的数据,不论服务器端是否需要,每一次HTTP请求都会把这些数据传输到服务器. Cookie默认的有效期很短暂,只能维持在web浏览器的会话期间,一旦用户关闭浏览器,数据丢失.Cookie的作用域并不局限在浏览器的单个窗口中,而是在整个浏览器进程,与有效期一致.Cookie的作用域是通过文档源和文档路径确定的(domain.path),来自同一个

Cookie、session和localStorage、以及sessionStorage

https://blog.csdn.net/u014753892/article/details/52821268 一.Cookie.session和localStorage的区别 cookie的内容主要包括:名字.值.过期时间.路径和域.路径与域一起构成cookie的作用范围.若不设置时间,则表示这个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就会消失.这种生命期为浏览器会话期的cookie被称为会话cookie. 会话cookie一般不存储在硬盘而是保存在内存里,当然这

cookie,localStorage,sessionStorage的特点与区别。

1.cookie Cookie实际上是一小段的文本信息.客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie.客户端浏览器会把Cookie保存起来.当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器.服务器检查该Cookie,以此来辨认用户状态.服务器还可以根据需要修改Cookie的内容.由于cookie的安全性不高,所以一般不把密码保存在cookie中: 2.localStorage ①相当于一个5M大小的前端数据库