在ASP.NET中確定瀏覽器是否接受Cookie
在asp.net中一種確定瀏覽器是否接受 Cookie 的方法是先編寫(xiě)一個(gè) Cookie,然后再嘗試讀取這個(gè) Cookie。如果不能讀取這個(gè) Cookie,則可以認(rèn)為該瀏覽器不接受 Cookie。
我編寫(xiě)了一個(gè)簡(jiǎn)單的示例來(lái)說(shuō)明如何測(cè)試 Cookie 是否被接受。該示例包含兩個(gè)頁(yè)面。在***個(gè)頁(yè)面中,我編寫(xiě)了一個(gè) Cookie,然后把瀏覽器重新定向到第二個(gè)頁(yè)面。第二個(gè)頁(yè)面嘗試讀取這個(gè) Cookie,轉(zhuǎn)而將瀏覽器重新定向到***個(gè)頁(yè)面,并向 URL 添加一個(gè)帶有測(cè)試結(jié)果的查詢字符串變量。
在asp.net中檢查瀏覽器是否接受Cookie的***個(gè)頁(yè)面的代碼如下:
- 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"];
- }
- }
***個(gè)頁(yè)面測(cè)試是否有回信,如果沒(méi)有,就搜索包含測(cè)試結(jié)果的查詢字符串變量 (AcceptsCookies)。如果沒(méi)有找到查詢字符串變量,則表示測(cè)試還沒(méi)有完成,代碼就寫(xiě)出一個(gè)名為“TestCookie”的 Cookie。寫(xiě)出 Cookie 之后,示例調(diào)用 Response.Redirect 來(lái)切換到測(cè)試頁(yè)面 (TestForCookies.aspx)。附加到測(cè)試頁(yè)面的 URL 的是名為 redirect 的查詢字符串變量,該變量中包含了當(dāng)前頁(yè)面的 URL,這樣就能在執(zhí)行測(cè)試后把重定向到該頁(yè)面。
測(cè)試頁(yè)面可以完全由代碼組成,不需要包含控件。以下就是用于測(cè)試瀏覽器是否接受Cookie使用的代碼:
- 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)
- // 沒(méi)有 Cookie,因此不需要接受
- acceptsCookies = "0";
- else
- ...{
- acceptsCookies = "1";
- //刪除測(cè)試 Cookie
- Response.Cookies["TestCookie"].Expires = DateTime.Now.AddDays(-1);
- }
- Response.Redirect(redirect + "?AcceptsCookies=" +acceptsCookies, true);
- }
這樣就實(shí)現(xiàn)了在ASP.NET中確定瀏覽器是否接受Cookie。
【編輯推薦】