Cookie和Session
Posted MinggeQingchun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cookie和Session相关的知识,希望对你有一定的参考价值。
一、Cookie
Cookie被翻译为"小甜点",是网页浏览器用来保存用户信息的文件,可以保存比如用户是谁,购物车有哪些商品等。
Cookie实际上是一小段的文本信息,Cookie 则是以字符串的 形式保存在客户端。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端会把Cookie保存起来。
当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。
如果没有设置Cookie失效日期,它们仅保存到关闭浏览器程序为止
如果将Cookie对象的Expires属性设置为Minvalue,则表示Cookie永远不会过期
Cookie存储的数据量很受限制,大多数浏览器支持最大容量为4K,因此不要用来保存数据集及其他大量数据
由于并非所有的浏览器都支持Cookie,并且数据信息是以明文文本的形式保存在客户端的计算机中,因此最好不要保存敏感的,未加密的数据,否则会影响网站的安全性
Cookie工作原理
1、我们访问浏览器的时候,浏览器会发送一个HTTP请求到服务器端;
2、服务器会发送一个HTTP响应到客户端,其中包括Sst-Cookie,意思就是浏览器建立一个cookie保存服务器指定的内容,比如用户信息和用户操作信息;
3、浏览器保存好信息之后,下次我们再次访问网站的时候,浏览器再发送HTTP请求到服务器端时都会携带之前保存的cookie;
4、服务器端会从收到的cookie中识别用户身份,就能让页面为你提供专门属于你的内容了
二、Session
Session 是以对象的形式保存在服务器端,Session会话是存放在服务器端的类似于HashTable结构来存放每个用户的专用信息。
会话是指我们访问网站的一个周期,比如用户打开一个浏览器访问某个位的站点,在这个站点点击多个超链接查看各个网页,然后关闭浏览器,整个过程称之为一个会话。
Session实现网页之间数据传递,是一个存储在服务器端的对象集合
每个客户端用户访问时,服务器都为每个用户分配一个唯一的会话ID(Session ID)。 她的生存期是用户持续请求时间再加上一段时间(一般是20分钟左右)。
Session中的信息保存在Web服务器内容中,保存的数据量可大可小。当 Session超时或被关闭时将自动释放保存的数据信息,由于用户停止使用应用程序后它仍然在内存中保持一段时间,因此使用Session对象使保存用户数据的方法效率很低。对于小量的数据,使用Session对象保存
Session工作原理
session在计算机网络应用中被称为“会话控制”
客户端浏览器访问网站的时候
服务器会向客户浏览器发送一个每个用户特有的会话编号sessionID,让他进入到cookie里。
服务器同时也把sessionID和对应的用户信息、用户操作记录在服务器上,这些记录就是session。
客户端浏览器再次访问时,会发送cookie给服务器,其中就包含sessionID。
服务器从cookie里找到sessionID,再根据sessionID找到以前记录的用户信息就可以知道他之前操控些、访问过哪里
Cookie与Session作用
HTTP 协议是一种无连接的协议,当客户端发出一个请求时,它们之间就会建立一个连接,等服务器响应了这个请求,这个连接就会被断开,这时候服务器再也不记得先前与客户端的那次亲密接触,一些用户信息当然也就消失了。
Cookie的诞生是为了解决HTTP无状态的特性无法满足交互式Web,它可以把用户的信息储存起来。主要用于会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息);个性化设置(如用户自定义设置、主题等);浏览器行为跟踪(如跟踪分析用户行为等)。服务器把用户登录的信息保存到客户端的 Cookie 中,这样用户感觉这个网站已经记着了自己。但是 Cookie 有它的缺点不宜存储过长的数据。
Session是服务器端使用的一种记录客户端状态的机制,使用上比Cookie简单一些,相应的也增加了服务器的存储压力。
Cookie 是以文件的形式保存在客户端的磁盘上,所以一 些重要数据很容易被修改,比如用户购买一些东西之后,修改自己的余额,然后提交给服务器,这种行为是一定不能允许的。
Session 就能保证数据的安 全,因为它是保存在服务器上的,服务器通过一个唯一的 SessionID 来区别不同的用户。这个 SessionID 就保存在客户端的 Cookie中(默认)或者重定向到URL里。
如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表即可。
Cookie与Session使用场景
Cookie技术可以将信息存储在不同的浏览器中,并且可以实现多次请求下的数据共享,分为临时Cookie和长久Cookie。如果一个Cookie没有设置有效期,那么浏览器在关闭时就会删除这个Cookie,这种Cookie叫做临时Cookie;如果Cookie设置了有效期,那么浏览器会一直保存这个Cookie,直到有效期为止,这种Cookie叫做长久Cookie。
Session是一种建立在Cookie之上的通信状态保留机制,可以实现在服务端存储某个用户的一些信息。服务器创建Session后,将Session的id以Cookie的形式返回给浏览器,只要浏览器不关,再去访问服务器时,就会携带着Session的id,服务器发现浏览器带Session的id过来,就会使用内存中与之对应的Session为之服务。
三、Cookie和Session区别
1、数据存储位置:Session 是以对象的形式保存在服务器端,而 Cookie 则是以字符串的 形式保存在客户端
2、安全性:cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。
3、服务器性能:session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。
4、数据大小:单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、信息重要程度:可以考虑将登陆信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie中。
6、生命周期:cookie的生命周期是累计的,从创建时,就开始计时,20分钟后,cookie生命周期结束,session的生命周期是间隔的,从创建时,开始计时如在20分钟,没有访问session,那么session生命周期被销毁,但是,如果在20分钟内(如在第19分钟时)访问过session,那么,将重新计算session的生命周期,session的默认失效时间为30分钟;关机会造成session生命周期的结束,但是对cookie没有影响
7、访问范围:session为一个用户浏览器独享;cookie为多个用户浏览器共享
以上是关于Cookie和Session的主要内容,如果未能解决你的问题,请参考以下文章