首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

IE对Cookie的path处置,一般是登录不成功

2014-01-22 
IE对Cookie的path处理,一般是登录不成功cookie.setPath()?? ? ?实践证明IE会忽略这个path,而chrome和fi

IE对Cookie的path处理,一般是登录不成功

  1. cookie.setPath("");

?? ? ?实践证明IE会忽略这个path,而chrome和firefox则会认为是设置了。因为根据cookie规范,如果设置了path,那么只有当访问路径中包含了这个path的url时才会发送cookie到服务器;如果没有设置path,那么只有当访问和设置cookie同样的路径时才会发送cookie到服务器。可惜的是这里IE忽略了,因此会按照后面的来处理cookie,而chrome和firefox则会认为设置了path,那么理所当然的任何访问路径都会携带cookie,这也就导致了我前面所说的情况了。

?

附:cookie的一些小知识:

1、Cookie存放的目录

Cookie是存放在客户端的东东,放在“TemporaryInternetFiles”目录,所以说存在安全性的问题。大伙可通过以下方式找到具体位置:打开控制面板→Internet选项→常规→Internet临时文件→设置→即可看到“当前位置”,→点击“查看文件”将直接打开该文件夹,你也可以点击“移动文件夹”变更它所在的位置。

2、Cookie的有效期

从上图我们可以清楚的看到每个Cookie文档的“截止期”(即为有效期)。在有效期内,当登录计算机的用户Administrator再次访问172.meibu.com时,那么IE就会在请求页面的同时,连同上述的名称为“Cookie:administrator@172.meibu.com”的Cookie文档内容一起发送给服务器。

若该文档包含多个Cookie的值时,截止期则以最后的失效期为准。

3、Cookie的类型

这里我们按有效期来分,分为两种:

a)即时型

指的是关闭浏览器(所有浏览172.meibu.com的IE)后,Cookie便失效,此类Cookie不会在“TemporaryInternetFiles”目录出现。其实它也有截止期的,为“0001-01-01”

b)持久型

就是已指定具体“截止期”的,能够在“TemporaryInternetFiles”目录里面找到的Cookie

4、Cookie的内容

双击打开“Cookie:administrator@172.meibu.com”,我们看到以下内容,如下图(http://blog.csdn.net/images/blog_csdn_net/cityhunter172/85935/r_aspxForm06.jpg):

上图中,“■”是换行符,你若是要打破什么锅来问我到底是怎么知道的话。我倒是会很乐意的告诉你:这就是经验!偶从学习C#那刻起,就拿第一个Windows程序——记事本来开刀,保存文档时得来的经验。

所以服务器读出来的格式如下图(http://blog.csdn.net/images/blog_csdn_net/cityhunter172/85935/r_aspxForm07.jpg):

5、在ASP.NET页面发放Cookie

发送上述Cookie的.cs代码为:

System.Web.HttpCookie ck=new HttpCookie("ckValue0");

ck["Author"]="CityHunter";

ck.Expires=System.DateTime.Now.AddMinutes(10);//若不指定,则为即时型Cookie

//ck.Path="/FormTest/ManageSys";//设置Cookie的虚拟路径,注意一定要以“/”开头,否则为无效Cookie;请大家自行看一下它与在客房端的Cookie文档“名称”与“Internet地址”的关系

Response.Cookies.Add(ck);

ck=newHttpCookie("ckValue1");//重新新建一个名为ckValue1的Cookie

ck.Expires=System.DateTime.Now.AddMinutes(20);//即刻起20分钟后失效

ck["E_Mail"]="mailto:cityhunter172@126.com%22;//设置ckValue1中的E_Mail值

ck["PersonalWeb"]="172.meibu.com";

Response.Cookies.Add(ck);//添加此Cookie

6、取回已发放Cookie的值

Response.Write(Request.Cookies["ckValue0"]["Author"]+"<br>");//用不着说明了吧

Response.Write(Request.Cookies["ckValue1"]["E_Mail"]+"<br>");

Response.Write(Request.Cookies["ckValue1"]["PersonalWeb"]);

热点排行