【状态保持】Cookie解释以及原理分析

【状态保持】Cookie解释以及原理分析

我们知道web网站在客户端存储数据有三种形式:1. Cookie   2. hidden(隐藏域) 3.QueryString 其中viewstate什么的都是通过第二种方式隐藏域存储滴。

      客户端存储数据有三种形式,那服务器端有几种呢? 嘿嘿 服务器端有:1. Session 2. Application 3. database 4. caching(缓存) 其中session用的较多,当然数据库是必须的。

      好了今天的主角是cookie(小甜饼)先看下cookie存在哪吧!首先,打开运行对话框输入cookies会打开一个文件夹没错这就是存储cookies的地方(声明:这里只是存储的IE浏览器的cookies,什么谷歌、火狐什么的存在他们所对应浏览器的安装目录中)。

先看一下怎么新建一个cookie吧!

HttpCookie cookie = new HttpCookie("userName");
cookie.Value = userName;
cookie.Expires = DateTime.Now.AddHours(2);
Response.Cookies.Add(cookie);

第一行:创建一个HttpCookie对象,然后构造函数 给个cookie名称
第二行:给这个cookie赋值---->因为cookie是以键值对存储的 ex:userName = “admin”
第三行:设置此cookie的失效时间,此值是一个具体的失效时间datetime类型   上面是设置两个小时后失效
第四行:将cookie写到cookie中,即写在响应报文头中一会分析原理的时候会讲到。

行设置了cookice了那我怎么读它呢?废话少说上代码

Request.Cookies["userName"].Value

      呵呵,是不是很简单,就是在请求中有个Cookices集合然后通过索引的方式访问他---->把它比较成Request.Form["....."]  这句是不是经常使。

好了会创建了也会获得了 那咱下面就分析一下原理

     大家想下服务器是通过什么传输数据的?Socket没错,前面的文章不是通过Socket实现过一个简单的web服务器吗 嘿嘿 ,然后Socket只是传输层的东东,那它

如果把数据发送到客户端浏览器的呢,在者说浏览器是通过什么把数据(请求)发送给服务器的呢?  是不是通过报文啊  客户端通过请求报文想服务端发送请求,然

后呢服务器接受到客户端的请求,又通过响应报文将服务端的数据发送给服务器。那么今天的Cookice就是通过报文传输的 下面通过图继续讲解

Set-Cookie: userName=admin; expires=Thu, 26-Apr-2012 15:52:34 GMT; path=/

设置cookie  将服务端设置的cookice 传给客户端浏览器,其中还包括了失效时间

从图中可以看出服务端设置cookice是通过响应报文头将cookice传输给浏览器滴,然后客户端呢 客户端是通过请求报文头将cookice传输给服务端滴

注意:

1. 因为Cookice是存储在客户端的数据,如果有敏感的数据必须在服务端加密后然后在保存

2. Cookice在客户端有两种保存形式:(1)保存在硬盘上(设置了cookice的失效时间的情况下) (2)保存在内存中(在没有设置cookice的失效时间的情况下)

3. 如果服务端的cookice和客户端已有的cookice重名则会覆盖原有的cookice

4. 如果要想清除某个cookice的话可是设置它的失效时间小于当前的日期即可cookie.Expires = DateTime.Now.AddDays(-1);

 

-------------------------------------------------------------
感谢您看完本篇博文!!!!

互联网产品永远是Beta版,没有做不到的只有想不到的。
李亮和大家共同学习共同进步,如有什么疑问或博文有什么错误知识,请您斧正。
您可以给我发邮件,也可以再文章下面留言我会第一时间回复您。

再次感谢您的观看,祝您身体健康!工作顺利!

分类: .net
7
0
« 上一篇:使用HttpListener实现简单Web服务器
» 下一篇:【状态保持】Cookice解析以及原理分析【续】
 posted on 2012-04-26 22:11 wlitsoft · 李亮 阅读(5516) 评论(2) 编辑 收藏

#1楼    
 快樂桃子° .   | 2012-04-27 16:21
1
dasds
1
反复难

1
大大松
http://pic.cnblogs.com/face/u277529.jpg
#2楼32512212015/8/21 0:10:41    
 雁过寒潭   | 2015-08-21 00:10
还有这种形式的吧 
 
1
2
Cookie c = new Cookie(String name,String value);
response.addCookie(c);


阅读更多
个人分类: 网络 web
上一篇记一次 PHP调用Java Webservice
下一篇打印web应用中所有的session键值对(小技巧)
想对作者说点什么? 我来说一句

asp.net系统对象与状态保持

2009年08月04日 3KB 下载

JAVA cookie记住登录状态10天

2016年06月23日 5KB 下载

soapui cookie处理方式

2015年09月30日 48KB 下载

正确理解http会话管理

2013年05月07日 268KB 下载

原生登录cookie保持提供webview使用

2016年04月11日 1.46MB 下载

Cookie session

2007年08月29日 55KB 下载

Cookie保存登陆状态.zip

2010年03月16日 17KB 下载

没有更多推荐了,返回首页

关闭
关闭