Cookie和Session的关系

首先给出结论:

Session是存储在cookie中的;

 

1.cookie

(1)什么是cookie?

小饼干,用于数据的临时存储,以便更方便的进行身份验证;

(2)过程原理:

① 浏览器端向服务器端(Tomcat)发送请求  -》

② 服务器根据需要生成cookie对象,并把一些数据(http请求头中的)保存在cookie中 -》

③ 服务器再把cookie放在http响应头中一并发还给浏览器  -》

④ 浏览器接收到服务器响应后,就会提取该cookie并将其保存在浏览器端;

那么,当浏览器在下一次访问"该"服务器的时候,浏览器就会把cookie放在http请求头中一并发还给服务器。服务器就会从请求头中提取该cookie对象,判别cookie中的数据,然后做出一些个性化的响应。

(3)生命周期:

① 默认为:会话结束就失效(关闭浏览器窗口,cookie就消失;<同理:关闭cookie,session就消失,详见下文>);

(4)存储位置:

浏览器端;

这样的cookie被称为:会话cookie

会话cookie 一般保存在内存中,而不是硬盘上。但是,如果设置了有效期,cookie就会被保存在硬盘上(直到到达有效期,cookie就会被浏览器相关的程序给清除掉)

PS:忽然想起来,每当我们卸载一个软件(比如:浏览器)时,它就会提示我们是否清除cookie用户相关信息。不觉明历 !_   !

(5)cookie的缺陷:

① 大小和数量限制
            通常来说每个站点只能保存20个cookie,每个cookie大小是4K以内;这里的站点指的是?我也不知道啊,我猜是网站 site

② 数据安全性
            由于http请求中是以明文的方式传递数据的,所以它是不安全的哦!

2. Session:

(1)什么是Session?

话说Session的历史:它在web开发中是一个非常重要的概念,但是这个概念非常抽象也非常难定义,也是被滥用最多的一个名字之一;Session在不同场合来说,它的含义也不一样,这里主要介绍HTTPSession;HTTPsession就是服务端为客户端创建的一个对象,这个对象用来保存一些用户的数据,这些数据用于服务端和客户端的“状态保存”;什么是状态保存?麻蛋

(2)过程原理:

① 浏览器发送http请求到服务器端 ->

② 服务器端会根据请求需求生成一个Session对象,并且对这个Session赋予一个唯一的编号 -> 

③ 服务器端把需要的数据记录到对应的Session对象中 ->

④ 接着,服务器端做一些逻辑处理,然后把Session对象的唯一编号,放在一个cookie中 ->

⑤ 最后,随着处理逻辑的完成,把响应发还给浏览器端 ->

⑥ 那么,浏览器端就会把这个带有Session ID的cookie保存起来 ->

当下一次浏览器端发送请求到“该”服务器的时候,就会发送这个带有session ID的cookie,服务器拿到这个带有session ID的cookie,就会取出对应的session ID,然后再到服务器中找到对应的session对象(session是存在服务端的);最后,当服务器辨别出这个用户后,就会对用户进行一些个性化的响应;

参考地址:https://blog.csdn.net/springsen/article/details/7833582

3. cookie与session的比较

(1)数据存储:

cookie以明文的方式存储在浏览器端,session存储在服务器端;

(2)安全性:

由于存储位置的原因,也就出现了浏览器端是不够安全的(但是,我们可以通过加密技术解决这个问题),服务器端更为安全;

(3)生命周期:

cookie的生命周期是累计时间的,即:到点就失效;session是以最后一次访问时间为倒计时的开始时间,同时,它还可以直接调用API来使他失效;

(4)使用原则:

cookie的缺陷,每个站点只能保存20个cookie,每个cookie大小4k以内;session是存放服务器端,会占用服务器内存,因此我们建议不要往session中存放过多过大的对象

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值