cookie、session的区别

一.  cookie

 

1.什么是cookie?

Cookie 技术产生源于 HTTP 协议在互联网上的急速发展。随着互联网时代的策马奔腾,带宽等限制不存在了,人们需要更复杂的互联网交互活动,就必须同服务器保持活动状态(简称:保活)。

Cookie 是在 HTTP 协议下,服务器或脚本可以维护客户工作站上信息的一种方式。Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的信息。无论何时用户链接到服务器,Web 站点都可以访问 Cookie 信息.

2.Cookie时效性

Cookie的默认时效为Session,也就是说浏览器关闭,Cookie会和session一起失效,但是Cookie的有效时间是可以设置的。

Cookie有一个属性expires,设置其值为一个时间,那么当到达此时间后,此cookie失效。


//创建cookie实例。 
HttpCookie cookie = new HttpCookie("id","666"); 
//设置cookie的过期时间,一小时后过期,自动清除文件 
cookie.Expires = DateTime.Now.AddMonths(60);
//将创建的cookie文件输入到浏览器端 
Response.Cookies.Add(cookie);
//读取cookie文件中存储的值 
Response.Write(Request.Cookies["id"].Value);
//cookie的销毁,给他设置一个时间,他就被销毁了
cookie.Expires = DateTime.Now.AddMonths(-60); 

 

3.执行流程:

1)、首先,客户端会发送一个http请求到服务器端。

2)、服务器端接受客户端请求后,发送一个http响应到客户端,这个响应头,其中就包含Set-Cookie头部,浏览器保存Cookie。

3)、浏览器第二次访问,将保存的cookie发给后台,后台识别并更新cookie,返回浏览器再次保存。

 
 
二.session
 

1、session是保存在服务器端,理论上是没有是没有限制,只要你的内存够大
 
2、浏览器第一次访问服务器时会创建一个session对象并返回一个JSESSIONID=ID的值,
   创建一个Cookie对象key为JSSIONID,value为ID的值,将这个Cookie写回浏览器
 
3、浏览器在第二次访问服务器的时候携带Cookie信息JSESSIONID=ID的值,如果该JSESSIONID的session已经销毁,
   那么会重新创建一个新的session再返回一个新的JSESSIONID通过Cookie返回到浏览器
 
4、针对一个web项目,一个浏览器是共享一个session,就算有两个web项目部署在同一个服务器上,针对两个项目的session是不同的
   如:你在tomcat上同时部署了两个web项目,分别是web1、web2。当你在一个浏览器上同时访问web1时创建的session是A1,访问web2时创建的session是A2。
       后面你再多次访问web1使用的session还是A1,多次访问web2时使用session就是A2
 
5、session是基于Cookie技术实现,重启浏览器后再次访问原有的连接依然会创建一个新的session,
   因为Cookie在关闭浏览器后就会消失,但是原来服务器的Session还在,只有等到了销毁的时间会自动销毁
 
6、如果浏览器端禁用了Cookie,那么每次访问都会创建一个新的Session,但是我们可以通过服务器端程序重写URL即可,如果页面多连接多,会增加不必要的工作量,
   那可以强制让你用户开启接收Cookie后再让其访问即可。
 

三.Cookie和Session的区别:

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。

4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

5、所以个人建议:将登陆信息等重要信息存放为session;其他信息如果需要保留,可以放在cookie中


 

你可能感兴趣的:(cookie、session的区别)