一种确定浏览器是否接受 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
);
}

介绍了确定浏览器是否接受Cookie的方法,即先写Cookie再尝试读取。还给出简单示例,包含两个页面,第一个页面写Cookie并将浏览器重定向到第二个页面,第二个页面读取Cookie后再重定向回第一个页面,并添加测试结果到URL。
815

被折叠的 条评论
为什么被折叠?



