我正在尝试删除Cookie,但它不会被删除。这是我尝试使用的代码。
if (Request.Cookies["dcart"] != null)
{
Response.Write(Request.Cookies["dcart"].Expires);
// Response 1/1/0001 12:00:00 AM
Response.Write(Request.Cookies["dcart"].Value);
// Response 229884
HttpCookie myCookie = new HttpCookie("dcart");
myCookie.Expires = DateTime.Now.AddDays(-1d);
myCookie.Value = "";
Response.Cookies.Add(myCookie);
}
Response.Write(Request.Cookies["dcart"].Expires);
// Response 1/1/0001 12:00:00 AM
Response.Write(Request.Cookies["dcart"].Value);
// Response 229884
当我再次检索cookie时,没有任何变化。我检查了与FireFox和Chrome相同的行为。有趣的是,到期日期在浏览器上正确显示,但在代码上显示。
我试过以下但没有用。
PS。代码无法直接在您的计算机上运行,因为您没有cookie。
答案 0 :(得分:3)
已解决
问题是路径。我请求的cookie位于“/ store”路径下,而我将响应路径信息发送到“/".
if (Request.Cookies["dcart"] != null)
{
HttpCookie myCookie = new HttpCookie("dcart");
myCookie.Expires = DateTime.Now.AddDays(-1d);
myCookie.Path = "/store";
Response.Cookies.Add(myCookie);
}
当我添加路径信息时,它已被删除。
注意:我使用Firebug来跟踪cookie路径。
答案 1 :(得分:0)
Cookie比他们看起来更棘手。阅读本文以获得有关如何使用cookie的清晰描述:
On The Care and Handling of Cookies
要删除cookie,根据链接的文章,您只需将过期时间设置为过去的任何时间,但不要使用DateTime.MinValue,因为某些浏览器无法正确处理该日期:
如果要删除客户端计算机上的cookie,请不要使用 显而易见的Response.Cookies.Remove(“MyCookie”)只是告诉了 cookie不会覆盖客户端的cookie(请参阅下面的更多内容 详细解释),随时设置cookie的Expires属性 在当前时间之前。这将告诉客户端覆盖 带有过期cookie的当前cookie,客户端永远不会发送 它回到服务器。
同样,诱惑是使用DateTime.MinValue(01-Jan-0001 00:00:00)删除cookie;再次,这将是一个错误。这个 时间,Netscape 7将按预期工作,但Internet Explorer 6 认为这是一个例外情况。如果是Internet Explorer 收到一个cookie,其中包含它认为是“空白”的到期日期, 它将保留cookie,直到浏览器关闭然后过期 它
使用a删除cookie的最安全(也是最对称)的方法 DateTime.Now.AddYears(-30)的到期日。
即。正确的方法是
Request.Cookies["dcart"].Expires = DateTime.Now.AddYears(-30);
答案 2 :(得分:0)
此链接将为您提供一些答案:
https://msdn.microsoft.com/en-us/library/ms178195.aspx
就我而言,只是在localhost中工作,但是,当我部署到服务器时,问题仍然存在......
在HttpCookie
中,您可以尝试设置Expire参数DateTime.Now.AddDays(-1d)
,(将过期日期设置为昨天)并设置属性Secure = false
。
在此之后,为我工作。