2012-03-12 86 views
0

我试图删除我的网站使用的所有Cookie,但从阅读中我无法这样做,因此我相信我唯一的选择是将过期日期更改为过去并让浏览器完成这项工作。目前我有一个名为“CookieDisplay”的cookie。在asp.net的页面加载事件中,我有:Cookie不会更改到期日期

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    For Each key As String In Request.Cookies.AllKeys 
     Dim cookie As New HttpCookie(key) 
     If (Not Request.Cookies(cookie.Name.ToString) Is Nothing) Then 

      cookie.Expires = DateTime.Now.AddDays(-1D) 
      Response.Cookies.Add(cookie) 
     End If 

    Next 

End Sub 

此代码查找“CookieDisplay”的Cookie并更改过期日期。然而,在客户端,我有以下的页面加载事件后触发的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); 
     } 
    } 
} 

function checkCookie() { 


     var SavedData = getCookie("CookieDisplay"); 
    if (SavedData != null && SavedData == "true") { 
     closeme(); 
    } 
} 

问题是cookie将被返回的值,因此到期日未采取影响这样的cookie不会过期,因此仍显示。难道是因为这个cookie是在javascript中创建的,而asp.net无法访问它?我是否必须从JavaScript和asp.net中过期cookies,具体取决于Cookie的创建位置?

由于通过Javascript和通过HTTP请求创建的cookie创建

回答

1

的Cookie没有区别。检查域和路径,这些cookie设置为。他们应该是一样的。

+0

我已经将cookie.Domain =“localhost”添加到服务器端代码中,因为原始cookie(由javascript创建)已将该域放置为localhost。这没有什么区别。 – mjroodt 2012-03-12 12:22:40

+0

你可以添加JavaScript的setCookie函数到你的问题? – 2012-03-12 12:31:15

+0

function acceptClicked() { setCookie(“CookieDisplay”,true,365); } – mjroodt 2012-03-12 12:37:33