设置在.Net中的cookie在Firefox中读取客户端但不在IE或Safari中读取

时间:2011-04-09 16:56:18

标签: asp.net cookies

以下.Net设置设置了Cookie

                HttpCookie c = new HttpCookie("tw"); 
                c.Expires = DateTime.Now.AddDays(100);
                c.Path = "/"; 
                c.Secure = false;  
                c.HttpOnly = false;

以下javascript读取cookie

    function getCookie(c_name)
    {
    var i,x,y,ARRcookies=document.cookie.split(";");
    for (i=0;i<ARRcookies.length;i++)
    {
      x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
      y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
      x=x.replace(/^\s+|\s+$/g,"");
      if (x==c_name)
        {
        return unescape(y);
        }
      } 
}

请求中不会发送额外的标头。这适用于Firefox但不适用于IE或Safari

1 个答案:

答案 0 :(得分:1)

这里发生的是您没有为您的cookie设置值。在IE中,无价值cookie不包含'='。这意味着,在你的代码x中是“”,而y是“tw”。 然后,在if子句中,名称比较总是失败,因为x是一个空字符串。结果,该函数返回未定。以一种处理IE中无值cookie中缺少'='的方式重写您的逻辑。