Cookie

1、Cookie是一种能够让网站服务器把少量数据(4kb左右)储存到客户端硬盘或内存,并且读取出来的一种技术。
2、当你浏览某网站时,由Web服务器放置于你硬盘上的一个非常小的文本文件,它可以记录你的用户ID、浏览过的网页或者停留的时间等网站想要你保存的信息。当你再次通过浏览器访问该网站时,浏览器会自动将属于该网站的Cookie发送到服务器去,服务器通过读取Cookie,得知你的相关信息,就可以做出相应的动作。
如在页面显示欢迎你的标语,或者让你不用输入ID、密码就直接登录等等。
3、浏览器访问一个站点时,只将属于当前站点的Cookie发过到服务器。(根据域名)—(没必要把每家医院的病历本都带过去。)
4、Cookie不兼容浏览器!(不同浏览器不共享Cookie文件数据)
5、最好是将要保存的内容在服务器端加密,为什么?
6、在硬盘中存放的位置与使用的操作系统和浏览器密切相关。
7、浏览器保存Cookie有两种方式
     1—浏览器的内存中;
     2—浏览器所在的电脑的硬盘中。为将要写入到浏览器的Cookie对象设置失效时间:
cook.Expires = DateTime.Now.AddMinutes(5);//设置cook5分钟后失效
开发场景:常用于登录和保存用户最近浏览商品
从浏览器发来的CookieExpires属性值是无效的.(浏览器在向服务器发送Cookie的时候,没有Cookie的失效时间发送过去)
 
补充:
不同浏览器间cookie总大小也不同:
FirefoxSafari允许cookie多达4097个字节,包括名(name)、值(value)和等号。
Opera允许cookie多达4096个字节,包括:名(name)、值(value)和等号。
InternetExplorer允许cookie多达4095个字节,包括:名(name)、值(value)和等号。
浏览器允许每个域名所包含的cookie数:
Microsoft指出InternetExplorer8增加cookie限制为每个域名50个,但IE7似乎也允许每个域名50cookie
Firefox每个域名cookie限制为50个。
Opera每个域名cookie限制为30个。
Safari/WebKit貌似没有cookie限制。但是如果cookie很多,则会使header大小超过服务器的处理的限制,会导致错误发生。
注:每个域名cookie限制为20将不再正确!
当很多的cookie被设置,浏览器如何去响应。
Safari(可以设置全部cookie,不管数量多少),有两个方法:
最少最近使用(leastrecentlyused(LRU))的方法:当Cookie已达到限额,自动踢除最老的Cookie,以使给最新的Cookie一些空间。InternetExplorerOpera使用此方法。
Firefox很独特:虽然最后的设置的Cookie始终保留,但似乎随机决定哪些cookie被保留。似乎没有任何计划(建议:Firefox中不要超过Cookie限制)。
 
注意:Cookie储存在客户端 :
 
请求由上至下:
第一次访问网站,请求cookLogin.aspx页面,服务器将页面的执行结果(html+css+js)发回到浏览器。浏览器翻译执行html+css+js,用户看到界面。
第二次当用户点击登录按钮,将用户名密码提交到服务器后,服务器验证通过,并讲用户ID存入一个Cookie对象,最后将Cookie对象随响应信息一同发回浏览器。浏览器根据情况储存cookie文本
第三次当用户访问该网站任何页面时,浏览器会自动根据域名将cookie信息一同发往服务器。(注意:浏览器自动完成此操作) <这就是只要访问的网站域名不变,Cookie就可以跨页面使用>
 

lCookie的操作:

l服务器设置Cookie:
     HttpCookie cok = new HttpCookie(“uId”, “10001”);//(“键”,”值”)
 cok.Expires = DateTime.Now.AddDays(18);//设置失效日期-现在之后的18天后
       context.Response.Cookies.Add(cok); //添加到响应中
 
l服务器获得客户端传来的Cookie:
     string strUName=context.Request.Cookies[“uId”].Value;//从请求中获得Cookie
 
posted @ 2013-04-07 21:57  Big.Eagle  阅读(180)  评论(0)    收藏  举报