目录
1.Cookie简介
Http是一个基于请求与响应、无状态的应用层协议
而无状态是指游览器不记得上一次用户对服务器请求了都什么,就比如登录操作,一次登录之后,再去访问别的时,它提示又要你登录。这种无状态给前后端之间的交互带来了困扰
Cookie的诞生就是为了解决这个困扰。某些网站为了辨别用户身份,将其用户数据以键值对的方式存储在客户端(通常是游览器)上,这样每次访问一个Web站点时,客户端会将相应的cookie数据放在http的报头里一起发送给服务器,而服务器就能根据cookie数据判断使用者。
Cookie是保存在客户端中的,按客户端的存储位置,分为内存cookie和硬盘cookie
内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就销毁了,其存在时间是短暂的。
硬盘Cookie保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,才会被删除。存在时间很长。
2.Cookie工作原理
1).服务器创建cookie
第一次登录一个网站后,服务器会创建一个具有身份标识的cookie,并将其以Set-Cookie的形式放入响应报头中.
2).客户端存储cookie
客户端收到响应报文后,根据报文中的set-cookie信息,生成相应的cookie保存在客户端,该Cookie里面记录这用户当前的信息。
3).发送cookie
用户再次访问网站时,会将所有存储在客户端的cookie检查一遍,如果存在某个网站的Cookie,则把该Cookie附加在请求资源的http请求报头上发送给服务器。
4).读取cookie
服务器获取后http请求后,识别读取出cookie后,找到cookie对应的信息.
3.Cookie作用
cookie的最根本作用就是在客户端存储用户访问网站的一些信息.比如:
- 用户自动登录。
- 购物车功能。
- 记录用户浏览数据,进行商品(广告)推荐。
4.Cookie缺陷
- cookie是附带在http请求报头中的,增加了流量负担
- cookie在http请求报头中是明文传递的,存在安全性问题(HTTPS除外).
- cookie是一种小型文本文件,大小限制在4KB左右。对于复杂的存储需求来说是不够用的。
5.Session简介
Session表示服务器的会话过程,这个过程可以是连续的,也可以是不连续的,Session是服务器的机制,Session对象用于存储特定用户会话所需的信息.
6.Session工作原理
用户第一次向服务器发送请求之后,服务器会创建一个相应的session;然后将session中的sessionld返回给客户端,这个sessionld就保存在cookie中;客户端收到sessionld会将它保存在cookie中,当客户端再次访问服务器时,会带上这个sessionld;当服务器再次接收到客户端的速求时,会根据发送过来的sessionld去内存中找对应的session,继续会话.
7.Session作用
Session的根本作用是在服务器端存储用户和服务器会话的一些信息。比如判断用户是否登录
8.Session与Cookie的联系
cookie和session都是用来来跟踪游览器用户身份的会话方式,sessionld是保存在cookie中的.
9.Session与Cookie的区别
1).存储位置不同
cookie存储在客户端上;
session存放在服务器端.
2).存储方式不同
cookie中只能保管ASCII字符串,并需要通过编码方式存储为Unicode字符或者二进制;
session中能存储任何类型的数据,比如string,integer,list,map等.
3)存储容量不同
单个cookie存储数据的容量在4K左右; 单个Cookie存储数据的容量在4K左右;
对于session来说,没有上限,但是session是由服务器保管的,考虑到服务器性能,还是不要在session上存放过多的信息.
4).安全性不同
cookie是保存在客户端上的,某些人可以分析存放在本地的cookie或抓包进行cookie诈骗,有安全隐患,不安全;
session是由服务器管理的,对客户端是透明,较为安全.
5).跨域支持不同
cookie支持跨域名访问;
session不支持夸域名访问.
6).对服务器压力不同
cookie是保存在客户端上的,不占用服务器的资源,对服务器的负担不大,适用于有很多并发用户的网站;
session是保管在服务器端的,每个用户都会产生一个session。假如并发访问的用户很多,会产生很多的session,耗费大量的内存.