Cookie、Session浅析

本文介绍了Cookie和Session的概念、作用及创建方法。详细解释了Cookie如何存储数据并用于客户端和服务端的交互,Session如何通过唯一ID追踪用户会话,以及二者在安全性上的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   一、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

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

 

评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值