返回首页
当前位置: 主页 > 网络编程 > Asp实例教程 >

asp Request 对象 用户手册

时间:2010-05-15 00:07来源:知行网www.zhixing123.cn 编辑:麦田守望者

Request 对象在 HTTP 请求期间,检索客户端浏览器传递给服务器的值 。

语法
Request[.collection|property|method](variable)

集合

ClientCertificate
ClientCertificate 集合从 Web 浏览器发布请求中获取验证字段(由 X.509 标准指定)。


如果 Web 浏览器使用 SSL3.0/PCT1 协议(也就是说,它使用以 https:// 开头的 URL,而不是 http://)连接服务器及服务器请求验证,则浏览器将发送验证字段。

如果没有发送验证,ClientCertificate 集合将返回 EMPTY。

必须先将 Web 服务器配置为要求客户端验证,然后才能使用 ClientCertificate 集合。

语法
Request.ClientCertificate( Key[SubField] )

参数
Key
指定要获取的验证字段名称。客户端验证包括下列字段。值 意义
Certificate 按 ASN.1 格式的二进制流字符串,其中包括完整的验证内容。
Flags 一组标志,提供其他客户端验证信息。可以设置下面的标志:
ceCertPresent - 当前的客户端验证。

ceUnrecognizedIssuer - 该链上来自未知的发布者的最后一个验证。

注意 要使用以上标志,必须在 ASP 页中包含客户端验证包含文件。若您正在使用 VBScript,则应包含 cervbs.inc。这些文件安装在 \Inetpub\ASPSamp\Samples 目录下。

Issuer 包含子字段值的列表的字符串,此列表包含验证发布者的信息。若该值在无 SubField 项的情况下指定,则 ClientCertificate 集合返回一个以逗号分隔的子字段列表。例如,C=US, O=Verisign 等。
SerialNumber 包含验证的序列号的字符串,序列号以连字符 (-) 分隔的 16 进制 ASCII 码表示。例如,04-67-F3-02。
Subject 包含子字段值的列表的字符串,此列表包含有关验证的主题信息。若该值在无 SubField 项的情况下指定,则 ClientCertificate 集合返回一个以逗号分隔的子字段列表。例如,C=US, O=Verisign 等。
ValidFrom 指定验证何时有效。此日期遵循 VBScript 格式并随国家(地区)设置而变化。例如,在美国可表示为 9/26/96 11:59:59 PM.
ValidUntil 指定验证何时到期。



SubField
可选参数,用于按 Subject 或 Issuer 关键字检索单独的字段。此参数作为一个后缀添加到 Key 参数中。例如,IssuerO 或 SubjectCN。下表列出了一些通用的 SubField 值。值 意义
C 指定原国家(地区)名。
CN 指定公用用户名。(此子字段仅同 Subject 关键字一起使用。)
GN 指定给定的名称。
I 指定一组首字母。
L 指定所在地。
O 指定公司或组织名称。
OU 指定机构的名称。
S 指定州或省。
T 指定此人或组织的头衔。


与在上述列表中所列的值不同,SubField 的值可被 ASN.1 标识所识别。ASN.1 标识的格式是一串通过句点 (.) 分隔的一系列数。例如: 3.56.7886.34。

注释
可以通过关键字用循环来遍历 ClientCertificate 集合。下面的例子对此进行演示。

<%
For Each key in Request.ClientCertificate
Response.Write( key & ": " & Request.ClientCertificate(key) & "<BR>")
Next
%>

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

<%
If Len(Request.ClientCertificate("Subject")) = 0
Response.Write("No client certificate was presented")
End if
%>

下面的示例获取发布客户端验证的公司的公用名。

<%= Request.ClientCertificate("IssuerCN") %>

下面的示例检查客户端验证主题的组织名。

<%
If (Request.ClientCertificate("Subject")="Msft")
Response.Write("Good Choice!")
End if
%>

下面的示例显示客户端验证何时到期。

This certification will expire on
<%= Request.ClientCertificate("ValidUntil") %>

下面的示例使用 Flags 关键字测试客户端验证的发布者是不是已知的。第一行的 include 命令使脚本可使用已命名标志 ceUnrecognizedIssuer。

<!--#include file="cervbs.inc" -->
<%
If Request.ClientCertificate("Flags") and ceUnrecognizedIssuer then
Response.Write "Unrecognized issuer"
End If
%>
 

Cookies
Cookies 集合允许用户检索在 HTTP 请求中发送的 cookie 的值。

语法
Request.Cookies(cookie)[(key)|.attribute]

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

key
可选参数,用于从 cookie 字典中检索子关键字的值。

attribe
指定 cookie 自身的有关信息。其属性参数如下:名称 说明
HasKeys 只读。指定 cookie 是否包含关键字。


注释
可以通过包含一个 key 值来访问 cookie 字典的子关键字。如果访问 cookie 字典时未指定 key,则所有关键字都会作为单个查询字符串返回。例如,如果 MyCookie 有两个关键字, First 和 Second ,而在调用 Request.Cookies时并未指定其中任何一个关键字,那么将返回下列字符串。

First=firstkeyvalue&Second=secondkeyvalue

如果客户端浏览器发送了两个同名的 cookie,那么 Request.Cookie 将返回其中路径结构较深的一个。例如,如果有两个同名的的 cookie,但其中一个的路径属性为 /www/ 而另一个为 /www/home/,客户端浏览器同时将两个 cookie 都发送到 /www/home/ 目录中,那么 Request.Cookie 将只返回第二个 cookie。

要确定某个 cookie 是不是 cookie 字典(cookie 有否有关键字),可使用下列脚本。

<%= Request.Cookies("myCookie").HasKeys %>

如果 myCookie 是一个 cookie 字典,则前面的赋值为 TRUE。否则,为 FALSE。

可以通过循环遍历 Cookies 集合中的所有 cookie 或 cookie 中的所有关键字。但是,通过关键字在没有关键字的 cookie 上遍历将不产生任何输出。使用 HasKeys 语法先检查一下 cookie 是否有关键字,可以避免这种情况。下面的例子对此进行演示。

<%
'Print out the entire cookie collection.
For Each cookie in Request.Cookies
If Not cookie.HasKeys Then
'Print out the cookie string
%>
<%= cookie %> = <%= Request.Cookies(cookie)%>
<%
Else
'Print out the cookie collection
For Each key in Request.Cookies(cookie)
%>
<%= cookie %> (<%= key %>) = <%= Request.Cookies(cookie)(key)%>
<%
Next
End If
Next
%>

示例
下面的例子打印 Web 页中的 myCookie 的值。

这是名为 myCookie 的 cookie 值:
<%= Request.Cookies("myCookie") %>

Form
Form 集合通过使用 POST 方法的表格检索邮送到 HTTP 请求正文中的表格元素的值。

语法
Request.Form(element)[(index)|.Count]

参数
element
指定集合要检索的表格元素的名称。

index
可选参数,使用该参数可以访问某参数中多个值中的一个。它可以是 1 到 Request.Form(parameter).Count 之间的任意整数。
注释
Form 集合按请求正文中参数的名称来索引。Request.Form(element) 的值是请求正文中所有 element 值的数组。通过调用 Request.Form(element).Count 来确定参数中值的个数。如果参数未关联多个值,则计数为 1。如果找不到参数,计数为 0 。

要引用有多个值的表格元素中的单个值,必须指定 index 值。index 参数可以是从 1 到 Request.Form(element).Count 中的任意数字。如果引用多个表格参数中的一个,而未指定 index 值,返回的数据将是以逗号分隔的字符串。

在使用 Request.Form 参数时,Web 服务器将分析 HTTP 请求正文并返回指定的数据。如果应用程序需要未分析的表格数据,可以通过调用不带参数的 Request.Form 访问该数据。

使用重述符可以遍历表格请求中的所有数据值。例如,用户通过指定两个值填写表格,Chocolate 和 Butterscotch。对于 FavoriteFlavor 参数,您可以使用下面的脚本检索这些值。

<%
For Each item In Request.Form("FavoriteFlavor")
Response.Write item & "<BR>"
Next
%>

上述脚本显示如下。

Chocolate
Butterscotch

使用 For...Next 循环可以生成同样的输出,如下列脚本所示。

<%
For i = 1 To Request.Form("FavoriteFlavor").Count
Response.Write Request.Form("FavoriteFlavor")(i) & "<BR>"
Next
%>

使用该复述符可以显示参数名。如下列脚本所示。

<% For Each x In Request.Form %>
Request.Form( <%= x %> ) = <%= Request.Form(x) %> <BR>
<% Next %>

该脚本在浏览器上显示下列信息。

FavoriteFlavor = Chocolate
FavoriteFlavor = Butterscotch

示例
请考虑下列表格。

<FORM ACTION = "/scripts/submit.asp" METHOD = "post">
<P>Your first name: <INPUT NAME = "firstname" SIZE = 48>
<P>What is your favorite ice cream flavor: <SELECT NAME = "flavor">
<OPTION>Vanilla
<OPTION>Strawberry
<OPTION>Chocolate
<OPTION>Rocky Road</SELECT>
<p><INPUT TYPE = SUBMIT>
</FORM>

下列的请求正文可以从该脚本中发送。

firstname=James&flavor=Rocky+Road

可以使用下面的脚本。

Welcome, <%= Request.Form("firstname") %>.
Your favorite flavor is <%= Request.Form("flavor") %>.

下面的输出就是结果。

Welcome, James. Your favorite flavor is Rocky Road.

如果使用下面的脚本

The unparsed form data is: <%= Request.Form %>

结果为

The unparsed form data is: firstname=James&flavor=Rocky+Road


QueryString
QueryString 集合检索 HTTP 查询字符串中变量的值。HTTP 查询字符串由问号 (?) 后的值指定。几个不同的进程都可以生成查询字符串。如,anchor 标记

<A HREF= "example?string=this is a sample">string sample</A>

生成值为 "this is a sample" 的变量名字符串。通过发送表格或由用户在其浏览器的地址框中键入查询也可以生成查询字符串。

语法
Request.QueryString(variable)[(index)|.Count]

参数
variable
在 HTTP 查询字符串中指定要检索的变量名。

index
这是一个可选参数,可以用来检索 variable 的多个值中的某一个值。这可以是从 1 到 Request.QueryString(variable).Count 之间的任何整数。
注释
QueryString 集合是在 ServerVariables 集合中 QUERY_STRING 变量的分析版本 。它可以让您以名称检索 QUERY_STRING 变量。Request.QueryString (参数) 的值是出现在 QUERY_STRING 中所有参数 的值的数组。通过调用 Request.QueryString(parameter).Count 可以确定参数有多少个值。如果变量未关联多个数据集,则计数为 1。如果找不到变量,计数为 0。

要在多个数据集合的一个中引用 QueryString 变量,请指定 index 的值。index 参数可以是 1 到 Request.QueryString(variable).Count 中任意值。如果没有指定 index 的值,引用多个 QueryString 变量中的某个变量时,返回的数据是逗号分隔的字符串。

在 Request.QueryString 中使用参数时,服务器分析发送给请求的参数,并返回指定的数据。如果应用程序需要未分析的 QueryString 数据,可以通过调用不带参数的 Request.QueryString 检索到这个数据。

可以使用复述符在查询字符串中循环遍历所有的数据值。例如,如果发送以下的请求

http://NAMES.ASP?Q=Fred&Q=Sally

而且 Names.asp 包含下面的脚本,

---NAMES.ASP---
<%
For Each item In Request.QueryString("Q")
Response.Write item & "<BR>"
Next
%>

Names.asp 将显示如下。

Fred
Sally

上述脚本也可以用 Count 来写。

<%
For I = 1 To Request.QueryString("Q").Count
Response.Write Request.QueryString("Q")(I) & "<BR>"
Next
%>

示例
客户端请求

/scripts/directory-lookup.asp?name=fred&age=22

results in the following QUERY_STRING value.

name=fred&age=22.

QueryString 集合将包含 name 和 age两个成员。那么,您就可以使用下面的脚本。

------分隔线----------------------------
标签(Tag):request对象
------分隔线----------------------------
推荐内容
猜你感兴趣