一種確定瀏覽器是否接受 cookie 的方法是先編寫一個 cookie,然后再嘗試讀取這個 cookie。如果不能讀取這個 cookie,則可以認(rèn)為該瀏覽器不接受 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 的查詢字符串變量,該變量中包含了當(dāng)前頁面的 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);
}
新聞熱點
疑難解答
圖片精選