现在位置:范文先生网>理工论文>计算机信息技术>用ASP检测浏览器是否允许Cookie功能的方法

用ASP检测浏览器是否允许Cookie功能的方法

时间:2023-02-21 00:09:30 计算机信息技术 我要投稿
  • 相关推荐

用ASP检测浏览器是否允许Cookie功能的方法

ASP检测浏览器是否允许Cookie功能的方法

 

作  者:董云  YUN DONG

工作单位:黄埔海关技术处工程师

通讯地址:广州市经济技术开发区志诚大道海关大楼

电话号码:020-82130556

邮政编码:510730

电子邮件:dy168@163.net

 

摘  要:指出用ASP检测浏览器Cookie功能的误区,说明错误的原因,并给出

解决方法和源代码

关键词:浏览器、Cookie、信息记录区

>

 

一、前言

检测浏览器是否允许Cookie功能其实并不困难。许多的文章都讨论到这个问题,但是,这

些文章中往往存在着许多问题,使得读者容易混淆,甚至有些文章中所给出的方法根本就是

错误的。本文将一步一步地详细解释困难所在,并给出实用的ASP代码。

 

二、问题的提出

尽管现在的浏览器基本上都支持Cookie功能,但是用户可以通过设置将Cookie功能禁止,

对于希望将一些信息记录到浏览器上去的Web服务器,就必须要清楚前来访问的用户浏览

器是否支持Cookie功能,惟一的办法就是自己去测试用户浏览器是否支持Cookie。这个问

题似乎十分简单,正如许多文章中所介绍的一样,我先给出一段ASP代码,它似乎可以轻

易地完成任务。

Cookie_test.asp

 

<%@ Language="VBScript" %>

<%

Option Explicit

Dim CookieValueset

Dim CookieValueRead

CookieValueset="true"

CookieValueRead="false"

Response.Cookies("Cookie_test") = CookieValueset

Response.Cookies("Cookie_test").Expires = Date + 1

CookieValueRead = Request.Cookies("Cookie_test")

If CookieValueRead = CookieValueSet Then

    Response.Write "浏览器支持Cookies"

Else

    Response.Write "浏览器不支持Cookies"

End If

%>

 

实际上,上述代码在浏览器允许和禁止Cookie功能的情况下,均得到浏览器支持Cookie功

能的结果。为什么会产生这样的结果呢?首先让我们来看一下Cookie的原理。浏览器是遵

循HTTP协议访问Web服务器的,一个完全的HTTP请求是由浏览器发出申请,Web服务

器回应其申请的内容,在这个过程中,浏览器会提供一块信息记录区来存储一些特殊的信息,

这个信息记录区是可以由浏览器和Web服务器同时访问的,而Cookie就保存在这个信息记

录区中。通过这个信息记录区,Web服务器可以写入Cookie以记录一些信息,并且可以在

将来进行访问,直到这个Cookie的生命期终止。在ASP代码中的Response.Cookies和

Request.Cookies类就是用来访问Cookie的。

现在的问题在于,按照HTTP协议,在往浏览器中写入Cookie后,其内容实际上存在于缓

存之中,直到该页面终止,才将内容写入到浏览器提供的信息记录区中去。在同一页面中写

入Cookie后立即读出其内容,读出的是缓存中的临时信息,而不是信息记录区中真正的

Cookie内容,所以在上面的代码中,即使浏览器禁止Cookie功能,仍然得到成功写入Cookie

的结果。

 

三、问题的解决

要解决这个问题,可以有两个办法,第一个办法是利用两个页面文件来分别进行Cookie的

写入和读出,在第一个文件中写入Cookie,然后转向第二个文件读出并判断,这样可以轻

易地得到正确的结果。但访问两个页面文件的方法显然对Web服务器的管理添加了麻烦,

在不担心这个问题的前提下,这是一个最佳的解决方法。

第二个办法是利用ASP中的REDIRECT语句来解决问题,如下笔者给出ASP源代码。浏

览器访问Cookie.asp,这个文件中含有一些代码判断Cookie检查是否已经作过,如果是,

则显示检查结果,如果没有,则自动转向Cookie_Detect.asp文件,在该文件中测试Cookie

功能并将结果传回给Cookie.asp。值得强调的是,我们不能使用ASP的Cookies和Sessions,

因为它们

都是利用前面所提的信息记录区来存储信息的,当Cookie功能禁止后,不可跨页

面使用。因此,笔者使用了QuerySring 来传递参数。

 

四、源代码

Cookie.asp

 

<%@ Language="VBScript" %>

<%

Option Explicit

Response.Buffer = True

Dim bCookies ' T/F indicating Cookies enabled.

bCookies = Request.QueryString("Cookies")

Select Case LCase(bCookies)

   Case "true", "false"

      ' We got a valid response.

      bCookies = CBool(bCookies)

   Case Else

        Response.Cookies("Cookie_test") = "true"

        Response.Redirect "Cookie_detect.asp"

End Select

%>

<html>

<head>

 <title>检测浏览器是否允许Cookie功能</title>

</head>

该浏览器Cookies功能: <%= bCookies %>

</body>

</html>

 

Cookie_detect.asp

 

<%@ Language="VBScript" %>

<%

Option Explicit

Response.Buffer = True

 Dim bCookiesEnabled

   bCookiesEnabled = Request.Cookies("Cookie_test")

   bCookiesEnabled = (bCookiesEnabled = "true")

   Response.Redirect "Cookie.asp" & "?Cookies=" & bCookiesEnabled

%>

 


【用ASP检测浏览器是否允许Cookie功能的方法】相关文章:

用ASP实现科技成果的网上查询及管理08-06

患者肺功能检查时沟通方法的体会08-05

一种用CPLD实现视频信号运动检测的方法08-06

用SoC实现视频图形引擎功能的研究08-06

课堂是允许孩子出错的地方08-13

课堂是允许孩子出错的地方08-13

请允许我犯错作文06-02

用Excel开发MIS的方法08-16

用Excel开发MIS的方法08-06