Cookie、Session浅析

来源:互联网 发布:直播网站程序源码 编辑:程序博客网 时间:2024/05/20 13:40

   一、Cookie

   1、概念

   存在于客户端,cookie就是服务器在你的电脑上保存了一些数据,并且是文本文件。当你下一次访问同一个服务器的时候,这个服务器会将一些键值对返回给客户端浏览器,从你的cookie资料里读出它上次保存的文本内容,进行判断,如果符合条件,就会给你相应的内容。


   2、作用

   在一个很短的时间内,如果与用户相关的数据被频繁访问,可以针对这个数据做缓存,这样可以大大提高数据的访问性能。

   由于是同一个客户端发出的请求,每次发出的请求都会带有第一次访问时服务端设置的信息,这样服务端就可以根据 Cookie 值来划分访问的用户了。

   3、创建

   HttpCookiecookie=new HttpCookie["key"];

   cookie.Value="good";

   Response.AppendCookie(cookie);  //写到本地浏览器

 

   cookie.Values.Add("Dwyane","good");

   cookie.Values.Add("kaoya","haochi");

   cookie.Values.Add("Pijiu","haohe");

   Response.AppendCookie(cookie);

   4、使用

   HttpCookiecookie=Request.Cookies["aspcn"];

   value1=cookies.Values["webmaster"];

   value2=cookies.Values["writer"];

 

   HttpCookiecookie=Request.Cookies["strKey"];

   if(null==cookie)

   {

   //cookie不存在

   }

   二、Session

   1、概念

   存在于服务器端,Cookie可以让服务端程序跟踪每个客户端的访问,但是每次客户端的访问都必须传回这些 Cookie,如果 Cookie 很多,这无形地增加了客户端与服务端的数据传输量,而Session 的出现正是为了解决这个问题。

   同一个客户端每次和服务端交互时,不需要每次都传回所有的Cookie 值,而是只要传回一个 ID,这个 ID 是客户端第一次访问服务器的时候生成的,而且每个客户端是唯一的。这样每个客户端就有了一个唯一的ID,客户端只要传回这个 ID 就行了,这个 ID 通常是 NANE 为 JSESIONID 的一个 Cookie。

   2、如何工作

   有了 Session ID 服务端就可以创建HttpSession 对象了,第一次触发通过 request.getSession() 方法。如果当前的 Session ID 还没有对应的HttpSession 对象,那么就创建一个新的,并将这个对象加到 org.apache.catalina. Manager 的 sessions容器中保存。Manager 类将管理所有 Session 的生命周期,Session 过期将被回收,服务器关闭,Session 将被序列化到磁盘等。只要这个HttpSession 对象存在,用户就可以根据 Session ID 来获取这个对象,也就达到了状态的保持。

   3、创建

   Session["变量名"]=;

   Session.Add("变量名",);

 

   如:Session["username"]="zs";等同于Session.Add("username","zs");

   4、使用

   Session["变量名"]就可以了

   Session["username"]这就代表"zs"这个字符串

   5、移出

   Session.RemoveAll()或者 Session.Clear()

   一般情况下Session的有效时间为20分钟

   Session.Timeout=…;

   常应用的场景:登录

 

   三、安全性

   虽然 Cookie 和 Session都可以跟踪客户端的访问记录,但是它们的工作方式显然是不同的,Cookie 通过把所有要保存的数据通过 HTTP协议的头部从客户端传递到服务端,又从服务端再传回到客户端,所有的数据都存储在客户端的浏览器里,所以这些 Cookie 数据可以被访问到。

   就像我们前面通过 Firefox 的插件HttpFox 可以看到所有的 Cookie 值。不仅可以查看 Cookie,甚至可以通过 Firecookie 插件添加、修改 Cookie,所以Cookie 的安全性受到了很大的挑战。

   相比较而言 Session 的安全性要高很多,因为Session 是将数据保存在服务端,只是通过 Cookie 传递一个 SessionID 而已,所以 Session 更适合存储用户隐私和重要的数据。


   总结

   关于cookie和session还有很多需要我去学习,这些只是对它们的简单理解。。



   分享:深入理解Cookie与Session

   分享:登陆案例(记住账号和密码)

 

1 0