一说到饼干我想大家都应该知道它是一个保存在客户端,当浏览器请求一个全球资源定位器(统一资源定位符)时,浏览器会携带相关的饼干达到服务器端,所以服务器是可以操作饼干的,在反应时,会把饼干信息输出到客服端。下面我们来看一个演示吧,代码如下
第一次请求结果如下
第二次请求结果如下
到这里我们可以看到第二次请求传入的饼干正好是第一次请求返回的饼干信息,这里的甜饼干信息的维护主要是我们客户端的浏览器,但是在Asp.net程序开发时嘿,饼干往往是在服务端程序里面写入,就如我的事例代码;很少有用客服端射流研究…实现的。现在我们就来看看ASP。网服务端是如何实现读写饼干的。首先我们来看看HttpRequest的饼干是如何定义的:复制代码代码如下:公共Httpcookiecollection Cookies { get { EnsureCookies();if(_ flags[NeedTovalidateCooKies]){ _ flags .清除(NeedToValidateCooKies);ValidateCookieCollection(_ cookies);} return _ cookies} }这里的饼干获取主要是调用一个确保甜饼干方法,确保甜饼干放主要是调用复制代码代码如下://填充饼干属性,但不挂钩验证。内部Httpcookiecollection EnsureCookies(){ if(_ cookies==null){ _ cookies=new Httpcookiecollection(null,false);if (_wr!=null)fillinkokiesccollection(_ cookies,true/* includerresponse */);if(hastransitioneddobsocketrequest)//WebSocket握手完成后不能修改饼干.MakeReadOnly();} return _ cookies}公共密封类httpookiecollection : NameObjectCollectionbase {内部httpookiecollection(Httpreresponse,bool ReadOnly): base(StringComparer .普通的){这个._响应=响应基地IsReadOnly=readOnly} }其中这里的FillInCookiesCollection方法实现也比较复杂:复制代码代码如下:内部void fillinkokiesccollection(Httpcookiecollection cookieCollection,bool includer response){ if(_ wr==null)返回;字符串s=_wr .GetKnownRequestHeader(HttpWorkerRequest .HeaderCookie);//解析甜饼干服务器变量//格式: C1=k1=v1k 2=v2;c2=.int l=(s!=null)?标准长度: 0;int I=0;int j;char chhttpookie LastCooKie=null while(I l){//查找下一个';'(不要看','根据91884)j=I;while(j l){ ch=s[j];if(ch==';')中断;j;} //创建甜饼干形式字符串字符串甜饼干字符串=子串(I