Request對象屬性和方法


Request 對象 屬性和方法
Request 對象
Request 對象在 HTTP 請求期間,檢索客戶端瀏覽器傳遞給服務器的值 。

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

集合
ClientCertificate 存儲在發送到 HTTP 請求中客戶端證書中的字段值。
Cookies HTTP 請求中被發送的 cookie 的值。
Form HTTP 請求正文中表格元素的值。
QueryString HTTP 中查詢字符串中變量的值。
ServerVariables 預定的環境變量的值。

屬性
TotalBytes 只允許讀。指定客戶端在請求正文中發送的字節總數。

方法
BinaryRead 檢索從客戶端發送到服務器作為 POST 請求的一部分的數據。

變量參數是一些字符串,這些字符串指定要從集合中檢索的項目,或作為方法或屬性的輸入。有關 variable 參數的詳細信息,請參閱各集合說明。

注釋
如果指定的變量不是上述的五個集合中的一個,Request 對象返回 EMPTY。

可以通過調用 Request(variable) 直接使用所有的變量,而不需要集合的名稱。正因為這樣,Web 服務器可以按照下面的順序搜索集合。
QueryString
Form
Cookies
ClientCertificate
ServerVariables
如果同名的變量出現在多個集合中,Request 對象返回遇到的第一個實例。

我們建議在涉及 ServerVariables 集合的成員時使用全名。例如,不用 Request.(AUTH_USER) 而用Request.ServerVariables(AUTH_USER) 。




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
%>









BinaryRead
BinaryRead 方法獲取作為 POST 請求的一部分而從客戶端傳送到服務器的數據。此方法獲取來自客戶端的數據並將其儲存在 SafeArray 中。SafeArray 是一個數組,其中包含維數和邊界信息。

語法
variant = Request.BinaryRead(count)

參數
variant
包含由該方法返回的無符號數的數組。該參數的類型為 VT_ARRAY | VT_UI1。

count
在執行前,指定要從客戶端讀取的字節數。此方法返回后,count 將包含從客戶機成功讀取的字節數。實際讀取的字節總數將小於或等於 Request.TotalBytes。
注釋
BinaryRead 方法用於讀取作為 POST 請求的一部分從客戶端發出的未加工數據。此方法用於在底層訪問數據,與此相反,Request.Form 集合用於查看在公告請求中發送的表格數據。一旦調用了 BinaryRead,則引用 Request.Form 集合中的任何變量都將導致錯誤發生。反之,一旦引用了 Request.Form 集合中的一個變量,則調用 BinaryWrite 也將導致錯誤發生。請記住,如果在訪問 Request 集合中的變量時未指定該變量屬於哪一個子集,將搜索 Request.Form 集合並強制使用上述規則。

示例
下列示例使用 BinaryRead 方法將請求的內容放入一個安全的數組中。
<%
Dim binread
Dim bytecount
bytecount = Request.TotalBytes
binread = Request.BinaryRead(bytecount)
%>
TotalBytes
TotalBytes 屬性指定客戶端在請求正文中發送的總字節數。該屬性只允許讀。
語法
Counter = Request.TotalBytes
參數
Counter
指定一個變量來接收客戶端在請求中發送的總字節數。
示例
以下腳本設置一個等於請求對象中包括的總字節數的變量。
<%
Dim bytecount
bytecount = Request.TotalBytes
%>
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 變量中的某個變量時,返回氖菔嵌漢歐指艫淖址?/p>

在 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兩個成員。那么,您就可以使用下面的腳本。
Welcome, <%= Request.QueryString("name") %>.
Your age is <%= Request.QueryString("age") %>.

將輸出
Welcome, Fred. Your age is 22.
如果使用下面的腳本
The unparsed query string is: <%=Request.QueryString %>
將輸出
The unparsed query string is: name=fred&age=22

Cookies
Cookies 集合允許用戶檢索在 HTTP 請求中發送的 cookie 的值。

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

參數
cookie
指定要檢索其值的 cookie。

key
可選參數,用於從 cookie 字典中檢索子關鍵字的值。

attribute
指定 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
ServerVariables
ServerVariables 集合檢索預定的環境變量。
語法
Request.ServerVariables (server environment variable)
參數
服務器環境變量
指定要檢索的服務器環境變量名。可以使用下面列出的值。
變量    說明
ALL_HTTP    客戶端發送的所有 HTTP 標題文件。
ALL_RAW    檢索未處理表格中所有的標題。ALL_RAW 和 ALL_HTTP 不同,ALL_HTTP 在標題文件名前面放置 HTTP_ prefix,並且標題名稱總是大寫的。使用 ALL_RAW 時,標題名稱和值只在客戶端發送時才出現。
APPL_MD_PATH    檢索 ISAPI DLL 的 (WAM) Application 的元數據庫路徑。
APPL_PHYSICAL_PATH    檢索與元數據庫路徑相應的物理路徑。IIS 通過將 APPL_MD_PATH 轉換為物理(目錄)路徑以返回值。
AUTH_PASSWORD    該值輸入到客戶端的鑒定對話中。只有使用基本鑒定時,該變量才可用。
AUTH_TYPE    這是用戶訪問受保護的腳本時,服務器用於檢驗用戶的驗證方法。
AUTH_USER    未被鑒定的用戶名。
CERT_COOKIE    客戶端驗證的唯一 ID,以字符串方式返回。可作為整個客戶端驗證的簽字。
CERT_FLAGS    如有客戶端驗證,則 bit0 為 1。
如果客戶端驗證的驗證人無效(不在服務器承認的 CA 列表中),bit1 被設置為 1。
CERT_ISSUER    用戶驗證中的頒布者字段(O=MS,OU=IAS,CN=user name,C=USA)。
CERT_KEYSIZE    安全套接字層連接關鍵字的位數,如 128。
CERT_SECRETKEYSIZE    服務器驗證私人關鍵字的位數。如 1024。
CERT_SERIALNUMBER    用戶驗證的序列號字段。
CERT_SERVER_ISSUER    服務器驗證的頒發者字段。
CERT_SERVER_SUBJECT    服務器驗證的主字段。
CERT_SUBJECT    客戶端驗證的主字段。
CONTENT_LENGTH    客戶端發出內容的長度。
CONTENT_TYPE    內容的數據類型。同附加信息的查詢一起使用,如 HTTP 查詢 GET、 POST 和 PUT。
GATEWAY_INTERFACE    服務器使用的 CGI 規格的修訂。格式為 CGI/revision。
HTTP_<HeaderName>    HeaderName 存儲在標題文件中的值。未列入該表的標題文件必須以 HTTP_ 作為前綴,以使 ServerVariables 集合檢索其值。
注意 服務器將 HeaderName 中的下划線(_)解釋為實際標題中的破折號。例如,如果您指定 HTTP_MY_HEADER,服務器將搜索以 MY-HEADER 為名發送的標題文件。
HTTPS    如果請求穿過安全通道(SSL),則返回 ON。如果請求來自非安全通道,則返回 OFF。
HTTPS_KEYSIZE    安全套接字層連接關鍵字的位數,如 128。
HTTPS_SECRETKEYSIZE    服務器驗證私人關鍵字的位數。如 1024。
HTTPS_SERVER_ISSUER    服務器驗證的頒發者字段。
HTTPS_SERVER_SUBJECT    服務器驗證的主字段。
INSTANCE_ID    文本格式 IIS 實例的 ID。如果實例 ID 為 1,則以字符形式出現。使用該變量可以檢索請求所屬的(元數據庫中)Web 服務器實例的 ID。
INSTANCE_META_PATH    響應請求的 IIS 實例的元數據庫路徑。
LOCAL_ADDR    返回接受請求的服務器地址。如果在綁定多個 IP 地址的多宿主機器上查找請求所使用的地址時,這條變量非常重要。
LOGON_USER    用戶登錄 Windows NT® 的帳號。
PATH_INFO    客戶端提供的額外路徑信息。可以使用這些虛擬路徑和 PATH_INFO 服務器變量訪問腳本。如果該信息來自 URL,在到達 CGI 腳本前就已經由服務器解碼了。
PATH_TRANSLATED    PATH_INFO 轉換后的版本,該變量獲取路徑並進行必要的由虛擬至物理的映射。
QUERY_STRING    查詢 HTTP 請求中問號(?)后的信息。
REMOTE_ADDR    發出請求的遠程主機的 IP 地址。
REMOTE_HOST    發出請求的主機名稱。如果服務器無此信息,它將設置為空的 MOTE_ADDR 變量。
REMOTE_USER    用戶發送的未映射的用戶名字符串。該名稱是用戶實際發送的名稱,與服務器上驗證過濾器修改過后的名稱相對。
REQUEST_METHOD    該方法用於提出請求。相當於用於 HTTP 的 GET、HEAD、POST 等等。
SCRIPT_NAME    執行腳本的虛擬路徑。用於自引用的 URL。
SERVER_NAME    出現在自引用 UAL 中的服務器主機名、DNS 化名或 IP 地址。
SERVER_PORT    發送請求的端口號。
SERVER_PORT_SECURE    包含 0 或 1 的字符串。如果安全端口處理了請求,則為 1,否則為 0。
SERVER_PROTOCOL    請求信息協議的名稱和修訂。格式為 protocol/revision 。
SERVER_SOFTWARE    應答請求並運行網關的服務器軟件的名稱和版本。格式為 name/version 。
URL     提供 URL 的基本部分。

注釋
如果客戶端發送的標題文件在上述表格中找不到,可以在調用 Request.ServerVariables 中給標題文件名加上 HTTP_ 的前綴以檢索其值。例如,如果客戶端發送標題文件
SomeNewHeader:SomeNewValue
您可以通過使用下面的語法檢索 SomeNewValue
<% Request.ServerVariables("HTTP_SomeNewHeader") %>
您可使用重述符以循環遍歷所有的服務器變量名。例如,使用下面的腳本打印出所有的服務器名。
<TABLE>
<TR><TD><B>Server Variable</B></TD><TD><B>Value</B></TD></TR>
<% For Each name In Request.ServerVariables %>
<TR><TD> <%= name %> </TD><TD>  <%= Request.ServerVariables(name) %> </TD></TR>
</TABLE>
<% Next %>
示例
下面的例子使用 Request 對象顯示一些服務器變量。
<HTML>
<!-- This example displays the content of several ServerVariables. -->
ALL_HTTP server variable =
<%= Request.ServerVariables("ALL_HTTP") %> <BR>
CONTENT_LENGTH server variable =
<%= Request.ServerVariables("CONTENT_LENGTH") %> <BR>
CONTENT_TYPE server variable =
<%= Request.ServerVariables("CONTENT_TYPE") %> <BR>
QUERY_STRING server variable =
<%= Request.ServerVariables("QUERY_STRING") %> <BR>
SERVER_SOFTWARE server variable =
<%= Request.ServerVariables("SERVER_SOFTWARE") %> <BR>
</HTML>
下一個示例使用 ServerVariables 集合將服務器名插入一個超文本鏈接。
<A HREF = "http://<%= Request.ServerVariables("SERVER_NAME") %>
/scripts/MyPage.asp">Link to MyPage.asp</A>


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com