單頁面判斷瀏覽器是否接受 Cookies
發(fā)表時間:2023-08-17 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]在 asp 應(yīng)用中,經(jīng)常用到 Session 對象來保存用戶臨時私有數(shù)據(jù),而 asp 的 Session 對象是依賴于瀏覽器的 Cookie 的,如果用戶出于安全原因或者無意中關(guān)閉了 Cookie ...
在 asp 應(yīng)用中,經(jīng)常用到 Session 對象來保存用戶臨時私有數(shù)據(jù),而 asp 的 Session 對象是依賴于瀏覽器的 Cookie 的,如果用戶出于安全原因或者無意中關(guān)閉了 Cookie 選項,則 asp 將無法正確識別用戶,最終導(dǎo)致 Session 對象不能正常使用。
要正確執(zhí)行以后的程序,就要先識別客戶程序是否接受 Cookie,然而瀏覽器并沒有提供識別 Cookie 是否關(guān)閉的方法,這樣就需要我們自己來想辦法進行測試。
于是很多開發(fā)人員就紛紛用自己的辦法來測試瀏覽器的 Cookie 狀態(tài),最常見的方法是在一個頁面里面送出一個 Cookie,然后在另一個頁面中測試此 Cookie 是否存在。這樣以來,我們就需要兩次 asp 請求。
我這里介紹的是一種結(jié)合服務(wù)器腳本與客戶端腳本,一次測試瀏覽器狀態(tài)的方法。
在 NetBox 第一次初始化 asp 程序時,將分配一個新的 Session 對象,并向客戶端送出一個以 Application.ApplicationID 為名稱的 Cookie,瀏覽器如果接受 Cookie,則下次訪問時將回送此 Cookie,NetBox 服務(wù)器在接受到此 Cookie 以后,將選用其指定的 Session 對象作為此次 asp 請求的 Session 對象使用,以保證 Session 對象針對具體用戶的唯一性和持久性。
由此我們知道,可以通過判斷瀏覽器是否接受了 Application.ApplicationID 為名稱的 Cookie 來判斷能否繼續(xù)下面的程序。而判斷瀏覽器中是否含有某個 Cookie,則可是使用瀏覽器的 cookie 對象來完成。下面這段代碼就是測試瀏覽器是否接受了 NetBox 的 Session:
<html>
<body>
<Script language="javascript">
if(document.cookie.search("<%=Application.ApplicationID%>=") == -1)document.write("Not ");
</Script>Allow.
</body>
</html>
這段代碼的前提是知道 NetBox 送出的 Cookie 的名稱。如果希望在 iis 中使用此段代碼,則比較困難,因為 iis 每次啟動后送出的 Cookie 的名稱都是不同的,所以為了測試,可以自行送出一個 Cookie 然后再進行測試:
<%Response.Cookie("CookieCheck")="on"%>
<html>
<body>
<Script language="javascript">
if(document.cookie.search("CookieCheck=") == -1)document.write("Not ");
</Script>Allow.
</body>
</html>