asp.net,删除cookie

时间:2017-06-07 13:08:40

标签: javascript asp.net cookies

这与其他地方(afaik)的答案不一样,我正在记录我未来使用的答案,但我也有兴趣了解更多

我已经在javascript中在客户端上创建了一个cookie,如此

document.cookie = "Navigating=true";

我尝试通过

设置到期日期在服务器上删除它
string cookieName = "Navigating";               
Response.Cookies.Remove(cookieName);

HttpCookie myCookie = new HttpCookie(cookieName);
myCookie.Expires = DateTime.Now.AddDays(-2);
Response.Cookies.Add(myCookie);

它不起作用,这是网络跟踪

enter image description here

注意名称错误,它是cookie11(我从截图中删除了其他cookie,这是第11个cookie)

所以现在我将cookie的值设置为

myCookie.Value = "true";

再试一次,它仍然无效,截图2 enter image description here

关键是现在正确,但路径仍然是错误的,所以最后

        if (Request.Cookies[cookieName] != null)
        {
            //Response.Cookies.Remove(cookieName);

            HttpCookie myCookie = new HttpCookie(cookieName);
            myCookie.Expires = DateTime.Now.AddDays(-2);
            myCookie.Value = "true";
            myCookie.Path = "";
            Response.Cookies.Add(myCookie);
        }

现在服务器正确删除了cookie

enter image description here

这是有效的,所以毫无疑问,但我有兴趣知道为什么javascript cookie没有路径,但asp.net默认情况下会这样做

1 个答案:

答案 0 :(得分:1)

默认情况下,Javascript cookie没有路径。正如您所写,在处理cookie时使用ASP.NET和Javascript时,这可能会导致不匹配。默认情况下,ASP.NET将cookie路径设置为/(root)。因此 - 为了确保完全兼容性,当通过Javascript创建cookie时,您可以通过简单地使用:

来设置路径
document.cookie="Navigating=true;path=/";