2017-06-07 73 views
2

這是不一樣的回答別處(據我所知),我記錄我的回答對我自己的未來使用,但我也很想知道更多asp.net,刪除一個cookie

我「VE通過設置與

string cookieName = "Navigating";    
Response.Cookies.Remove(cookieName); 

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

到期日它不工作,創建客戶端上的cookie在javascript像這樣

document.cookie = "Navigating=true"; 

,我已經試過在服務器上刪除它,這裏的網絡跟蹤

enter image description here

註名是錯誤的,它的cookie11(我已經刪除從截圖其他餅乾,這是第11屆的cookie)

所以現在我設置cookie的值是一些

myCookie.Value = "true"; 

,然後再試一次,但它仍然無法正常工作,截圖2 enter image description here

關鍵是現在 - [R飛行但路徑仍然是錯誤的,所以最後

 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的默認路徑是

+0

供我自己參考。我也嘗試在超鏈接的onclick中創建一個cookie,asp.net無法看到它。當我添加一個'/'的路徑時,它確實如此。之前,我通過點擊按鈕創建了Cookie,然後是頁面重新加載 – tony

回答

1

默認情況下,Javascript cookies沒有路徑。正如你寫的,這在處理cookie時使用帶Javascript的ASP.NET時會導致不匹配。默認情況下,ASP.NET將Cookie路徑設置爲/(root)。因此 - 爲了確保完全兼容,通過Javascript創建cookie時,您可以通過簡單地使用以下設置路徑:

document.cookie="Navigating=true;path=/"; 
+0

位更多信息可以幫助用戶保存Google搜索,爲什麼我要設置路徑? – tony

+0

嗨@tony,我詳細闡述了我的答案。希望它使事情更清楚。 –

+0

我在想更多這樣的事情,但那會做 https://stackoverflow.com/questions/576535/cookie-path-and-its-accessibility-to-subfolder-pages – tony