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

转载 2016年08月29日 10:59:36
【状态保持】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);


Cookie解释以及原理分析

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

简单安全的用cookie保持登录状态

昨天决定把从前的旧事收拾一下,首先要做的就是把放下好久的留言本完善好!在做登录验证及保持登录状态时遇到了点问题,首先,要安全;其次,这只是一个简单的留言本程序,要简单些,不要搞的过于复杂! 在水...
  • sayigood
  • sayigood
  • 2009年11月21日 21:00
  • 3231

cookie实现保持用户登陆状态

package com.chen.controllers;import javax.servlet.http.Cookie; import javax.servlet.http.HttpSession...
  • u012637437
  • u012637437
  • 2015年05月25日 15:13
  • 1401

使用cookie保存用户的登录状态——初步实现

保存用户的登录状态是许多网站都会使用,一般会使用session、数据库或者cookie和session相结合的办法,这里我们了解 cookie的方法来保存用户登录状态. Cookie 是在 HTT...
  • Chation_99
  • Chation_99
  • 2017年01月09日 14:29
  • 6477

session HTTP协议与状态保持 cookie

session HTTP协议与状态保持 cookie
  • jsjw18
  • jsjw18
  • 2010年10月09日 20:29
  • 2645

WebRequest持久化 保存登录状态

这样的一个需求: 网站的接口需要验证session或者cookies是否登录过如果用WebRequest请求的话没有session或者cookies肯定是请求不成功的! 要想保存服务器登录之后的s...
  • i348018533
  • i348018533
  • 2013年03月12日 19:01
  • 2361

利用cookie实现侧滑菜单,在刷新以后依然保持原来的展开或者收缩样式

滑菜单,在刷新以后依然保持原来的展开或者收缩样式。把这个展开还是收缩的状态保存到cookie里面就好啦 侧滑菜单里面的每个li $(“.sidebar-menu li”).click(functi...
  • qq_33769914
  • qq_33769914
  • 2017年03月09日 10:09
  • 577

flask中的session cookie 测试 和 项目中的用户状态保持

测试代码 # -*- coding:utf-8 -*- # Author: json_stevefrom flask import Flask, current_app, make_response...
  • Json_Steve
  • Json_Steve
  • 2017年12月23日 22:35
  • 53

Cookies+Session保存用户登陆状态

Cookies+Session保存用户登陆状态
  • sunboy_2050
  • sunboy_2050
  • 2009年12月07日 16:50
  • 8354

如果客户端禁用cookie,我们怎么实现状态管理?

当用户禁止cookie以后,如果要访问某个需要session机制支持的web组件(jsp/servlet),此时,不能直接在浏览器地址栏输入该组件的地址,要使用服务器生成的地址,该地址可以使用以下方法...
  • track_remover
  • track_remover
  • 2012年10月20日 22:33
  • 257
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【状态保持】Cookie解释以及原理分析
举报原因:
原因补充:

(最多只允许输入30个字)