- Cookie和Session的原理以及区别
(1)Session是会话,是保存在服务器端用于保持用户身份。主要用于解决登录的敏感资源访问的相关问题。
(2)Session原理:当客户端向服务器发起请求时,服务器会先检查一下客户端请求头里是否有session_id,是否过期。如果客户端的请求头中包含session_id,那么服务器就会根据cookie对应的session_id检索出Session;如果没有session_id,那么服务器就会创建一个。如果在此期间,用户刷新页面或者重启服务器,生成的session_id也是不同的。
(3)Cookie是用来实现储存Session的一种方式,保存在客户端。使用场景通常是xxx天免登录
(4)Cookie原理:Cookie是由服务器生成,保存在客户端。用户第一次发起请求后,由服务器生成cookie,并将Set-Cookie字段封装到响应头中发送给客户端。当客户端再次发起请求,在请求中就会携带保存在客户端的cookie数据,发送到服务器。
- session产生的session_id放在cookie里面,如果用户把cookie禁止掉,是不是session也不能用了呢?
禁止掉cookie后,session可以用,不过需要通过其他方式来获取sessionid,如可以跟在url的后面,或者以表单的提交方式到服务器端,从而使服务器端了解客户端的状态。
- 为什么说session 比cookie更安全?
cookie是存放在客户端硬盘上的一个文本文件。而session的sessionID放在cookie中,要想功破session的话,得分两步:
(1)攻破cookie,要得到sessionID,sessionID是要有人登录,或者启动会话才会有,咱不知道什么时候会有人登录。
(2)sessionID是加密的,第二次启动会话的时候,前一次的sessionID就没有用了,session过期时sessionid也会失效,想在短时间内功破加了密的 sessionID很难。session是针对某一次通信而言,会话结束session也就随着消失了。
使session失效的方法:
1.关闭tomcat 2.重启web应用 3.session时间到 4.无效的session
- cookie和session的区别:
(1)cookie保存在客户端,session保存在服务器
(2)cookie是以明文的方式存放在客户端的,安全性低,可以通过一个加密算法进行加密后存放; session存放于服务器的内存中,所以安全性好
(3)cookie为多个用户浏览器共享; session为一个用户浏览器独享
(4)cookie的生命周期是累计的,从创建时,就开始计时,20分钟后,cookie生命周期结束;session的生命周期是间隔的,从创建时,开始计时如在20分钟,没有访问session,那么session生命周期被销毁。但是,如果在20分钟内(如在第19分钟时)访问过session,那么,将重新计算session的生命周期。关机会造成session生命周期的结束,但是对cookie没有影响。