2012-03-12 84 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