cookie :
1、cookie是存在客户端(浏览器)的进程内存中和客户端所在的机器硬盘上
2、cookie只能能够存储少量文本,大概4K大小
3、cookie是不能在不同浏览器之间共享
1 添加Cookie 2 //1.0 在服务器端实例化cookie对象 3 4 HttpCookie cookie = new HttpCookie("name", name); 5 6 //2.0 设置cookie在浏览器端有效时间为2分钟,注意:此时浏览器就会将cookie存入到其所在的硬盘(等待时间到期以后才消失) 7 8 cookie.Expires = DateTime.Now.AddSeconds(120); 9 10 //3.0 Path ="/" 表示当前浏览器请求此网站的任何页面都会将有效cookie传入给服务器 11 12 cookie.Path = "/01cookie/"; //指定当前cookie只有在浏览器访问01cookie文件下下的所有页面才传入服务器 13 14 //4.0 设置Domain 表示当前cookie只有在当前设置好的域名下才有效 15 16 //注意:如果没有指定Domain 的情况下,asp.net会智能的读取当前url中的主机 17 18 //实现单点登录的简单方式可以设置cookie的Domain 为顶级域名 19 20 //顶级域名 .baidu.com 21 22 //二级域名:www.baidu.com,zhidao.baidu.com mp3.baidu.com 23 24 //三级域名:zhidao.s1.baidu.com ,但是一般只是用到二级域名,三级域名对于网站的seo优化回不明显 25 26 //单点登录:实现一次登录以后再当前域名下面的其他站点可以实现免登录 27 28 cookie.Domain = ".c12.com"; //将cookie的Domain设置成顶级域名以后再其所有的二级域名下的网站都可以共享此cookie 29 30 //5.0 通过Response.Cookies 将cookie对象发送给浏览器保存 31 32 Response.Cookies.Add(cookie); //底层就是向相应报文头中 添加指令 set-cookie:name = admin;Expires UTC时间
获取Cookie的值 :
if (Request.Cookies["name"] == null) { Response.Write("<script>alert('登录状态已经失效,请重新登录');window.location='login.aspx'</script>"); }
删除Cookie:
//清除cookie思路,一定是将cookie的过期时间设置为当前时间以前的某个时间点 //清除 path=/下的并且doamin曲子url主机的cookie HttpCookie cookie = new HttpCookie("name", ""); cookie.Expires = DateTime.Now.AddYears(-1); //表示清除path=/01cookie/的cookie cookie.Path = "/01cookie/"; Response.Cookies.Add(cookie); //set-cookie :Expires:2013-4-11
Session:
1、存在服务器端,存在网站进程的内存中
2、在初次设置session的时候,会在session池中实例化一个session对象,以asp.net_sessionid 的值作为key,同时会将key以cookie的形式
保存到客户端的内存中
3、session的作用域只存在当前浏览器的会话中,当浏览器关闭以后就会将sessionid丢失,但是服务器的session对象要20分钟以后才会回收
4、在web.config中的 <system.web> 节点下添加 <sessionState timeout="5" cookieless="true"></sessionState> 手动修改session的相关设置
注意点:
aspx编译完成以后会自动实现接口IRequiresSessionState,所以能够直接使用session
但是一般处理程序,需要程序员自己实现接口IRequiresSessionState ,才能够使用session对象
如果浏览器禁用了cookie,则可以使用
设置: <sessionState cookieless="true"></sessionState> 来开启url传入sessionid到服务器,但是不推荐使用
添加Session:
//将当前name的值存入session中 context.Session["name"] = name;
获取Cookie:
(string)Session["name"]
删除Cookie:
//负责清除session context.Session["name"] = null; context.Session.Abandon(); 取消当前会话
在一般处理程序中要使用session 要实现 System.Web.SessionState. IRequiresSessionState 接口