ASP.NET檢測瀏覽器是否接受Cookies

2010-08-28 10:51:18來源:西部e網(wǎng)作者:

  一種確定瀏覽器是否接受 Cookie 的方法是先編寫一個 Cookie,然后再嘗試讀取這個 Cookie。如果不能讀取這個 Cookie,則可以認為該瀏覽器不接受 Cookie。

  我編寫了一個簡單的示例來說明如何測試 Cookie 是否被接受。該示例包含兩個頁面。在第一個頁面中,我編寫了一個 Cookie,然后把瀏覽器重新定向到第二個頁面。第二個頁面嘗試讀取這個 Cookie,轉(zhuǎn)而將瀏覽器重新定向到第一個頁面,并向 URL 添加一個帶有測試結(jié)果的查詢字符串變量。

  第一個頁面的代碼如下:

\protected System.Web.UI.WebControls.Label labelAcceptsCookies;
\ 
\  
private void Page_Load(object sender, System.EventArgs e)
 
{
   
   
if(!IsPostBack)
   {
    WriteCookie();
    
   }

  }

\
\  
private void  WriteCookie()
  
{
   
if( Request.QueryString["AcceptsCookies"==null)
   
{
    Response.Cookies[
"TestCookie"].Value = "ok";
    Response.Cookies[
"TestCookie"].Expires = DateTime.Now.AddMinutes(1);
    Response.Redirect(
"CookieRead.aspx?redirect="+Server.UrlEncode(Request.Url.ToString()));
   }

   
else
   
{
    labelAcceptsCookies.Text 
= "接受 Cookie = "+Request.QueryString["AcceptsCookies"];
   }

  }

  第一個頁面測試是否有回信,如果沒有,就搜索包含測試結(jié)果的查詢字符串變量 (AcceptsCookies)。如果沒有找到查詢字符串變量,則表示測試還沒有完成,代碼就寫出一個名為“TestCookie”的 Cookie。寫出 Cookie 之后,示例調(diào)用 Response.Redirect 來切換到測試頁面 (TestForCookies.aspx)。附加到測試頁面的 URL 的是名為 redirect 的查詢字符串變量,該變量中包含了當前頁面的 URL,這樣就能在執(zhí)行測試后把重定向到該頁面。

  測試頁面可以完全由代碼組成,不需要包含控件。以下就是使用的代碼:

\private void Page_Load(object sender, System.EventArgs e)
  
{
   ReadCookie();
  }

\  
private void ReadCookie()
  
{
   String redirect  
= Request.QueryString["redirect"];
   String acceptsCookies ;
   
// 是否接受 Cookie?
   if(Request.Cookies["TestCookie"==null)
    
// 沒有 Cookie,因此不需要接受
    acceptsCookies = "0";
   
else
   
{
    acceptsCookies 
= "1";
    
//刪除測試 Cookie
    Response.Cookies["TestCookie"].Expires = DateTime.Now.AddDays(-1);
   }

   Response.Redirect(redirect 
+ "?AcceptsCookies=" +acceptsCookies, true);
}

 

關(guān)鍵詞:ASP.NET

贊助商鏈接: