日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

谈谈 Cookie 存取和IE页面缓存的问题

發布時間:2025/3/19 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 谈谈 Cookie 存取和IE页面缓存的问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近老是發現在IE里會有Cookie的問題,如IE下面無法登出,或無法登錄,或者登錄后信息卻無法取到,而Firefox下面一直是通過的,都試過好多次了,今天終于找回的主要的原因;

Cookie的問題:

首先看一下我的Cookie存取代碼 (這個Cookie操作支持二級域名訪問)
#region 存取Cookie
/// 〈summary〉
/// 存Cookie
/// Json Lee 2007-09-24
/// 〈/summary〉
/// 〈param name="strName"〉名稱〈/param〉
/// 〈param name="strValue"〉值〈/param〉
/// 〈param name="expDate"〉到期時間〈/param〉
/// 〈returns〉〈/returns〉
public void SetCookie(string cookieName, string cookieValue, int cookieExpiryMinute)
{
cookieName = cookieName.ToLower();
HttpCookie cookie = new HttpCookie(cookieName,cookieValue);
cookie.Expires = DateTime.Now.AddMinutes(cookieExpiryMinute); //設置Cookie過期時間
cookie.Path = "/";
 //設置可訪問Cookie的路徑 為項目下的cookie文件夾及其子文件夾下所有頁面
  //如果需要整個應用程序可訪問 則設置為cookie.Path = "/"; 即可
cookie.Domain = ".163.com";
//以www.163.com為例,若要在 news.163.com等不同主機訪問可以如上設置

//刪除舊的同名Cookie
HttpContext.Current.Response.Cookies.Remove(cookieName);

HttpContext.Current.Response.Cookies.Add(cookie);
}

/// 〈summary〉
/// 存Cookie
/// Json Lee 2007-09-24
/// 〈/summary〉
/// 〈param name="strName"〉名稱〈/param〉
/// 〈param name="strValue"〉值〈/param〉
/// 〈returns〉〈/returns〉
public void SetCookie(string cookieName, string cookieValue)
{
SetCookie(cookieName, cookieValue, 60);
}

/// 〈summary〉
/// 清除Cookie
/// 〈/summary〉
/// 〈param name="strName"〉名稱〈/param〉
/// 〈returns〉〈/returns〉
public void ClearCookie(string cookieName)
{
SetCookie(cookieName,"",-5);
}

/// 〈summary〉
/// 取Cookie
/// Json Lee 2007-09-24
/// 〈/summary〉
/// 〈param name="strName"〉名稱〈/param〉
/// 〈param name="strDefaultValue"〉當沒有值的時候的默認值〈/param〉
/// 〈returns〉〈/returns〉
public string GetCookie(string cookieName, string defaultValue)
{
cookieName = cookieName.ToLower();
string strResult = defaultValue;
try
{
if (HttpContext.Current.Request.Cookies != null)
 {
  if (HttpContext.Current.Request.Cookies[cookieName] != null)
  {
 strResult = HttpContext.Current.Request.Cookies[cookieName].Value;
 }
 }
 }
catch (Exception ex)
{
this.WriteWrongLog(ex);
}

return strResult;
}

/// 〈summary〉
/// 取Cookie
/// Json Lee 2007-09-24
/// 〈/summary〉
/// 〈param name="strName"〉名稱〈/param〉
/// 〈returns〉〈/returns〉
public string GetCookie(string strName)
{
return GetCookie(strName, "");
}
#endregion
Cookie存取看起來的確很簡單,而在.NET里面好像更簡單。
  但是......................
  往往簡單的東西經常出現一些問題,讓人找不到原因。
  我之前這里出現的問題就是,在寫Cookie的時候,沒有處理舊的同名Cookie,例如:第一次登錄的時候寫入 Cookie username=jsonlee 和 password=123456
有時候有可能會在未退出的情況下重新登錄一下,這樣就會再次寫入同樣的Cookie,但這樣的情況,好像沒有把原來的覆蓋(我用 IECookies 這個工具看到的),而是新加入一個同名的。這樣一來明顯問題就存在了。
所以我在SetCookie的方法里面加入了
//刪除舊的同名Cookie
HttpContext.Current.Response.Cookies.Remove(cookieName); 這樣一來問題就解決了。

  IE頁面緩存的問題:

  我現在的用戶登錄狀態是通過 Ajax調用一個 GetUserBar.aspx 來取得用戶狀態欄信息的
以下是 GetUserbar.aspx 的代碼
〈%@ Page language="c#" Codebehind="GetUserBar.aspx.cs" AutoEventWireup="false" Inherits="Web.GetUserBar" %〉
〈%if(CheckIsLogin()){%〉
您好:〈%=this.GetNickname()%〉
〈a href="〈%=UrlRewriteLink.GetUserHomeUrl()%〉"〉您的主頁〈/a〉 |
〈a href='/user/user_setup.aspx'〉個人設置〈/a〉 |
〈a href='/logout.aspx'〉退出〈/a〉
〈%}else{%〉
〈span style="margin-right:10px; "〉您已經登錄了!〈/span〉〈a href="/reg.aspx"〉注冊〈/a〉 | 〈a href="/login.aspx"〉登錄〈/a〉
〈%}%〉

  如上面這段代碼,如果通過Ajax調用它,哪就可以在靜態頁面上取得用戶的登錄信息
可是.......
  這個問題就出來了,而且還不容易發現,哪就是IE的頁面緩存,IE好像有個機制會把訪問過的頁面緩存到 C:\Documents and Settings\用戶名\Local Settings\Temporary Internet Files 這個文件夾里面。所以每個Ajax調用的GetUserBar.aspx時候IE取到的都是緩存信息,而不是GetUserBar.aspx運行的結果。所以才出現了,一直無法登出或無法登錄的狀態(其實是已經登錄登出了的,只是表面上看不出來)。

  解決辦法就是在 GetUserBar.aspx 的Page_Load方法里面加入設定"Response.Expires"的時間的處理,如:
private void Page_Load(object sender, System.EventArgs e)
{
this.Response.Expires = 0;

}

  這樣問題就解決了。

  網上存在很多的Cookie操作的文章,可是這些東西都是抄來抄去的,哪個站長跟本就沒有對這些代碼做過測試,我以前試著看過好多個,很多是存在有問題的。
希望這篇文章會給需要的人帶來幫助。

轉載于:https://www.cnblogs.com/tiger8000/archive/2007/11/15/960538.html

總結

以上是生活随笔為你收集整理的谈谈 Cookie 存取和IE页面缓存的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。