admin 管理员组

文章数量: 1184232


2023年12月17日发(作者:axislabel)

ASP Request对象

Request对象用于接受所有从客户端浏览器发往服务器请求内的所有信息。当客户端请求一个页面或者发递一个表单时,服务器端将使用Request对象获取客户端提供的全部信息。包括从HTML表单用POST方法或者GET方法传递的参数、cookie和用户认证等。

1 Request对象成员

Request对象是ASP中使用最多的对象之一,它的成员非常少仅包含一个TotalByetes属性和一个BinaryRead方法。TotalByetes是一个只读的属性,表示从客户端所接收数据的字节的长度,其语法格式如下:

字节长度=<%=yetes%>

例如,下面的代码将返回用户输入数据的字节数:

<%

(yetes)

%>

Request对象具有唯一的方法BinaryRead(count),当数据作为Post请求的一部分发往服务器时,从客户请求中获得count字节的数据,返回一个数组。一般来说,如果使用BinaryRead方法来取得服务器端所传递的数据,那么就不能使用Request对象所提供的各种数据集合,否则会发生错误。反之,如果已经使用Request对象所提供的数据集合来取得客户端信息,那么就不能再使用BinaryRead方法,否则同样会发生错误。事实上,BinaryRead方法在实际编程中极少使用,其语法格式为:

Variant 数组=Read(count)

BinaryRead方法的返回值为通用变量数组(Variant Array),而其参数是一个整数,表示每次读取的数据字节大小,其范围介于0到Request对象的TotalByetes属性所取得的字节大小。

2 Request对象数据集合

Request对象提供了5个集合,可以用来访问客户端对Web服务器请求的各类信息,这些集合分别是:ClientCertificate、Cookies、Form、QueryString和ServerVariables,下面依次进行介绍。

1.ClientCertificate集合

ClientCertificate集合从Web浏览器发布请求中获取验证字段(由X.509标准指定)。在Web服务器端要先配置要求客户端验证,然后才能使用ClientCertificate集合,如果没有发送验证,ClientCertificate集合将返回EMPTY。

ClientCertificate集合的语法格式如下:

Certificate(Key[SubField])

参数说明:

 Key 指定要获取的验证字段名称,各个验证字段的名称及含义如表2-1所示。

表2-1 验证字段

字段名称

Subject

Issuer

SerialNumber

Certificate

Flags

ClientCertificate

ValidFrom

ValisdUntil

含义

证书的主题

证书的发行人

证书的序列号

包含整个证书内容的二进制流,使用ASN.1格式

一组标志,提供客户端验证信息

返回一个以逗号分隔的子字段列表

证书发行的日期。此日期遵循VBScript格式并随国家(地区)设置而变化

证书的到期时间

 SubField 可选参数,用于按Subject或者Issuer关键字检索单独的字段。此参数将作为一个后缀添加到Key参数中。例如,IssuerO或者SubjectCN。

下面的示例使用Subject关键字测试客户端验证是否存在。

<%

If Len(Certificate("Subject")) = 0

("No client certificate was presented")

End If

%>

2.Cookies集合

由于HTTP是一个无状态的通信协议,所以每次与服务器的连接都被认为全新,因此,如果想要判断某个客户端是否访问过本服务器,那么就可以使用Cookies集合。通常情况下,当客户端第一次与服务器建立连接时,可以利用Response对象的Cookies数据集合将一个“标记”存放到客户端。当客户端再次与本服务器建立连接时,就可利用Request对象的Cookies集合获取该“标记”信息。

从Cookies集合中获取信息的语法如下:

CookieValue=s(cookie)[(key) |.attribute]

各参数的意义如下:

 参数cookie 指定要检索其值的cookie。

 可选参数key 用于从cookie中检索子关键字的值;

 参数Attribute 指定与cookie自身有关的属性。一般情况下,每个Cookies都包含Domain、Expires、HasKeys、Path和Secure等属性。但对于Request对象的Cookie数据集合而言,只包含HasKeys属性。而且HasKeys属性是一个只读属性,它可以用来判断指定的Cookies是否包含其他的Cookies。

Request对象的Cookies集合通常与Response对象的Cookies集合一起使用,因些将在介绍Response对象的Cookies集合时将详细说明。

3.Form集合

这个集合里放的是客户端使用POST方法传向服务器的数据集合。比如,在HTML文档中,有一个From,其method的方式是POST(不是GET),而这个From的action指向一个ASP文档,那么当用户点击上传后,那么这个From内的input、Select、checkbox等里面是值都会放入Form集合内。

Form集合的语法格式如下:

(element)[(index)|.Count]

参数说明:

 Element From内的元素名称

 Index 可选属性,是索引,指定了该From内的元素的第几个,有时候,在一个From内有好几个相同的元素,名字都一样,可用这个属性来指定是那一个,其值是1到Count中的整数,Count表示所有这个相同的元素传过来的整数。如果不用改属性,那么数据会用“,”分开。

例如下面的代码就获取了表单内Text文本框的内容。

<%

Dim value1,value2

'获取用户输入的数据

value1=("txtbox1")

value2=("txtbox2")

%>

4.QueryString集合

客户端数据提交方式有两种:GET与POST。QueryString集合用来收集以GET方式提交的数据,而POST方式提交的表单数据则由Form集合来收集。QueryString集合与Form集合主要的区别在于前者是通过取得HTTP的附加参数来传递数据(附加参数通常使用“?”来连接,多个参数间用&隔开),而后者通过单独的数据包来传递数据。

例如:/?key=web&ClassID=1&stype=old

在浏览器中输入上面地址,那么文件将收到三个变量的值,分别是:key、ClassID和stype。

QueryString集合的语法格式如下:

tring(variable)[(index)|.Count]

参数说明:

 Variable 是属性名。

 Index 可选属性。是索引,指定同名变量里的第几个。

 Count 是表单中元素的个数。

下面的示例就通过变量fname获取文本框的内容,判断并显示相应的问候信息,具体代码如下:

<%

Dim fname

fname=tring("fname")

If fname<>"" Then

("Hello " & fname & "!
")

("How are you today?")

End If

%>

如果表单的Method为Post,则QueryString集合无法获取数据,必须使用Form集合。与此相同,当Method属性为Get时,则必须通过

QueryString集合获取数据。

5.ServerVariables集合

Request的ServerVariables集合中记录了与HTTP请求一超传递的HTTP头信息。浏览器的请求和服务器端的响应都包含在HTTP头,HTTP头提供了有关请求和响应的附加信息等。通过访问ServerVariables集合,可以获取有关发出请求的浏览器信息、客户端的IP地址等重要信息。

访问ServerVariables集合的语法如下:

Variables("服务器环境变量")

由于服务器环境变量较多,表2-2出了其中常用的服务器环境变量。

表2-2 服务器环境变量

环境变量 说明

ALL_HTTP

CONTENT_LENGTH

CONTENT_TYPE

LOCAL_ADDR

客户端发送的所有HTTP标题文件。

客户端发送内容的长度。

内容的数据类型(如:“text/html”)。同附加信息的查询一起使用,如HTTP查询GET、POST和PUT。

返回接受请求的服务器地址。如果在绑定多个IP地址的多宿主机器上查找请求所使用的地址时,这条变量非常重要。

LOGON_USER

QUERY_STRING

REMOTE_ADDR

REMOTE_HOST

REQUEST_METHOD

SERVER_NAME

SERVER_PORT

URL

SCRIPT_NAME

HTTP_USER_AGENT

用户登录Windows NT的帐号。

查询HTTP请求中问号(?)后的信息。

发出请求的远程主机 (client)的IP地址。

发出请求的主机(客户端)名称。如果服务器无此信息,将被设置为空的MOTE_ADDR变量。

该方法用于提出请求。相当于用于HTTP的GET、HEAD、POST等。

出现在自引用URL中的服务器主机名、DNS化名或者IP地址。

发送请求的端口号。

提供URL的基本部分。

执行脚本的虚拟路径。

用户代理字符串。

可以使用如下代码输出ServerVariable集合中所有的服务器环境变量:

Dim item

For Each item In Variables

item & "

"

Next


本文标签: 集合 客户端 请求