您的位置:首页 > 其它

Cookie 和 Session

2014-04-10 15:31 169 查看
1、通过URL传递

两个页面之间传递数据最好、后续麻烦最少、最简单的方法就是通过URL传递。

优点:简单,直接,明确知道发给谁,数据不会乱。

缺点:1、如果多个页面或者不确定页面之间要传那么就需要每次跳转都带着;2、不保密。

2、Cookie

1、如果想自由的传递和读取,用Cookie。Cookie是和站点相关的,并且每次向服务器请求的时候除了发送表单参数外,还会将和站点相关的所有Cookie都提交给服务器,是强制性的。Cookie也是保存在浏览器端的,而且浏览器会在每次请求的时候都会把和这个站点的相关的Cookie提交到服务器,并且将服务端返回的Cookie更新回数据库,因此可以将信息保存在Cookie中,然后在服务器端读取、修改。服务器返回数据除了普通的html数据外,还会返回修改的Cookie,浏览器把拿到的Cookie值更新本地浏览器的Cookie就可以。

2、在服务器端控制Cookie案例,实现记住用户名的功能。

1》设置值的页面:Response.SetCookie(new HttpCookie("UserName",username)); //生命周期是浏览器的生命周期。

设置值的页面:

HttpCookie cookie = new HttpCookie("Name", "xlt");

cookie.Expires = DateTime.Now.AddDays(3); //表示三天后过期

context.Response.SetCookie(cookie);

2》读取值的页面:username = Request.Cookies["UserName"].Value;

3、如果不设定Expires那么生命周期则是关闭浏览器则终止,否则“最多”到Expires的时候终止。

4、Cookie的缺点:还不能存储过多信息,机密信息不能存,cookie是可以被清除的,不能把不能丢的数据存到Cookie中;Cookie的大小是有限制的,一般为几K,几百K

5、Cookie无法跨不同的浏览器。

3、submit :只有被点击的submit的 name和value会被传送给服务器。

Session的原理

1、Cookie不能存储机密数据。如果想储存,可以保存一个Guid到Cookie中,然后在服务器中建立一个以Guid为Key,复杂数据为Value全局Dictionary。放到Application中。

2、asp.net已经内置了Session机制,把上面的例子用ASP.NET Session重写。普通的HttpHandler要能够操作Session,要实现IRequiresSessionState接口。

3、Cookie是存在客户端的,Session是存在服务器端的。目的是一样的:保存和当前客户端相关的数据(当前网站的任何一个页面都能取到Session、Cookie)

4、Session有自动销毁机制,如果一段时间内浏览器没有和服务器发生任何的交互,则Session会定时销毁,这也就是为什么一段时间没操作,系统就会自动退出。

asp.net 如何设置单个session 过期时间?

在WEB.CONFIG中配置<sessionState mode="InProc" timeout="60"/>这是60分钟后过期。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: