2011-04-09 51 views
1

以下.NET设置来设置饼干在Firefox阅读客户方而不是IE或Safari

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

以下JavaScript读取

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

+0

那么IE或Safari会发生什么?错误? – 2011-04-09 17:00:42

+0

我不认为我曾经使用过JavaScript来获得像你似乎想要的饼干。也许你可能更容易使用AJAX从你的后端获取cookies而不是? – peterthegreat 2011-04-09 17:01:17

+0

我在换回前试过。使用AJAXPro作为包装(笔记本电脑上只有可视化Web开发人员),生成的用于检查Cookie的页面的JavaScript类将会变得非常激烈,即当调用cookie检查方法时,JavaScript对象有时会以未定义的方式返回。 – bizl 2011-04-09 17:05:44

回答

1

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

+0

这听起来很合理。将测试和反馈。钽 – bizl 2011-04-13 21:15:25