一種確定瀏覽器是否接受 cookie 的方法是先編寫一個(gè) cookie,然后再嘗試讀取這個(gè) cookie。如果不能讀取這個(gè) cookie,則可以認(rèn)為該瀏覽器不接受 cookie。
我編寫了一個(gè)簡單的示例來說明如何測試 cookie 是否被接受。該示例包含兩個(gè)頁面。在第一個(gè)頁面中,我編寫了一個(gè) cookie,然后把瀏覽器重新定向到第二個(gè)頁面。第二個(gè)頁面嘗試讀取這個(gè) cookie,轉(zhuǎn)而將瀏覽器重新定向到第一個(gè)頁面,并向 url 添加一個(gè)帶有測試結(jié)果的查詢字符串變量。
第一個(gè)頁面的代碼如下:
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è)頁面測試是否有回信,如果沒有,就搜索包含測試結(jié)果的查詢字符串變量 (acceptscookies)。如果沒有找到查詢字符串變量,則表示測試還沒有完成,代碼就寫出一個(gè)名為“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);
}
新聞熱點(diǎn)
疑難解答
圖片精選