检测浏览器是否接受Cookies(Downmoon)?

王朝other·作者佚名  2007-01-29
窄屏简体版  字體: |||超大  

一种确定浏览器是否接受 Cookie 的方法是先编写一个 Cookie,然后再尝试读取这个 Cookie。如果不能读取这个 Cookie,则可以认为该浏览器不接受 Cookie。

我编写了一个简单的示例来说明如何测试 Cookie 是否被接受。该示例包含两个页面。在第一个页面中,我编写了一个 Cookie,然后把浏览器重新定向到第二个页面。第二个页面尝试读取这个 Cookie,转而将浏览器重新定向到第一个页面,并向 URL 添加一个带有测试结果的查询字符串变量。

第一个页面的代码如下:

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"];

}

}

第一个页面测试是否有回信,如果没有,就搜索包含测试结果的查询字符串变量 (AcceptsCookies)。如果没有找到查询字符串变量,则表示测试还没有完成,代码就写出一个名为“TestCookie”的 Cookie。写出 Cookie 之后,示例调用 Response.Redirect 来切换到测试页面 (TestForCookies.aspx)。附加到测试页面的 URL 的是名为 redirect 的查询字符串变量,该变量中包含了当前页面的 URL,这样就能在执行测试后把重定向到该页面。

测试页面可以完全由代码组成,不需要包含控件。以下就是使用的代码:

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);

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航