揭开ASP神秘面纱(2)

作者:米仙圣人 来源: 日期:2002-6-5
   Request 对 象 
   
  作者:米仙圣人 
   
    Request对象是获取客户端浏览器传送给服务器的数据,也就是让你从访问你的ASP的
访问者那里获得信息。Request对象(请求对象)包含Form 集合、QueryString集合、
Cookies集合、ServerVariables集合和Clientcertificate集合等五个集合。 
   
  1、Form 
    Form 集合通过使用 POST 方法的表格检索邮送到 HTTP 请求正文中的表格元素的
值。 
    语法 Request.Form(element)[(index)|.Count] 
    参数 
      element 指定集合要检索的表格元素的名称。 
      index 可选参数,使用该参数可以访问某参数中多个值中的一个。它可以是 1 
到Request.Form(parameter).Count 之间的任意整数。 
       Count 集合中元素的个数  
    Form 集合按请求正文中参数的名称来索引。Request.Form(element) 的值是请求正
文中所有 element 值的数组。通过调用 Request.Form(element).Count 来确定参数中值的
个数。如果参数未关联多个值,则计数为 1。如果找不到参数,计数为 0。要引用有多个值
的表格元素中的单个值,必须指定 index 值。index 参数可以是从 1到Request.Form
(element).Count 中的任意数字。如果引用多个表格参数中的一个,而未指定 index 值,
返回的数据将是以逗号分隔的字符串。 
   
  2、QueryString 
     QueryString 集合检索 HTTP 查询字符串中变量的值 ,HTTP 查询字符串由问号 
(?) 后的值指定。通过发送表格或由用户在其浏览器的地址框中键入查询也可以生成查询字
符串。 
     语法 
     Request.QueryString(variable)[(index)|.Count] 
     QueryString 集合可以让您以名称检索 QUERY_STRING 变量。Request.QueryString
( 参数 ) 的值是出现在 QUERY_STRING 中所有参数的值的数组。通过调用
Request.QueryString(parameter).Count 可以确定参数有多少个值。 
   
  3、Cookies 
    Cookie 其实是一个标签,当你访问一个需要唯一标识你的站址的 WEB 站点时,它会
在你的硬盘上留下一个标记,下一次你访问同一个站点时,站点的页面会查找这个标记。每
个 WEB 站点都有自己的标记,标记的内容可以随时读取,但只能由该站点的页面完成。每
个站点的 Cookie 与其他所有站点的 Cookie 存在同一文件夹中的不同文件内(你可以在 
Windows 的目录下的 Cookie 文件夹中找到它们)。一个 Cookie 就是一个唯一标识客户的
标记,Cookie 可以包含在一个对话期或几个对话期之间某个 WEB 站点的所有页面共享的信
息,使用 Cookie 还可以在页面之间交换信。Request 提供的 Cookies 集合允许用户检索
在 HTTP 请求中发送的 cookie 的值。这项功能经常被使用在要求认证用户密码以及电子公
告板、WEB 聊天室等 ASP 程序中。 
     语法 
     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。 
   
  4、ServerVariables 
     大家都知道在浏览器中浏览网页的时候使用的传输协议是 HTTP,在 HTTP 的标题文
件中会记录一些客户端的信息,如 : 客户的 IP 地址等等,有时服务器端需要根据不同的
客户端信息做出不同的反映,这时候就需要用 ServerVariables 集合获取所需信息。 
     语法 
     Request.ServerVariables ( 服务器环境变量 ) 
   
   
  服务器变量 用途 
  ALL_HTTP 包含有在表单HTTP_NAME:value下的非标准头标的完整列表 
  ALL_RAW 除了当它被接收的时候没有HTTP前缀和其他的格式,其他的和ALL_HTTP一样 
  APLL_MD_PATH 包含有数据库的逻辑路径 
  APLL_PHYSICAL_PATH 包含有数据库的物理路径 
  AUTH_PASSWORD 如果使用最基本的身份验证时所输入的口令 
  AUTH_TYPE 使用的安全身份验证类型 
  AUTH_USER 已经过身份验证的用户名 
  CERT_COOKIE 包含客户认证的唯一标识符 
  CERT_FLAGS 如果客户认证存在,则设置第一个标志位,如果Certificate Authority可
信,则设置第二个标志位 
  CERT_ISSUER 客户认证发放机构 
  CERT_KEYSIZE 在SSL安全码中的位数 
  CERT_SECRETKEYSIZE 在服务器中的SSL安全码中的位数 
  CERT_SERIALNUMBER 客户认证的序列号 
  CERT_SERVER_ISSUER 发放服务器认证的Certificate Authority 
  CERT_SERVER_SUBJECT 服务器认证的Subject域 
  CERT_SUBJECT 客户认证的Subject域 
  CONTENT_LENGTH 访问者向服务器发出请求时报告的字节数 
  CONTENT_TYPE 请求的类型 
  GATEWAY_INTERFACE 以CGI/版本号形式给出的CGI版本 
  HTTPS 如果是一个安全请求,则包含字符串on,否则的话包含字符串off 
  HTTPS_KEYSIZE 在请求中使用的SSL的位数 
  HTTPS_SECRETKEYSIZE 在服务器端使用的位数 
  HTTPS_SERVER_ISSUER 服务器认证的Certificate Authority 
  HTTPS_SERVER_SUBJECT 服务器认证的Subject域 
  INSTANCE_ID Web服务器的实例标识号 
  INSTANCE_META_PATH 该具体实例的元数据库路径 
  LOCAL_ADDR 服务器的IP地址 
  LOGON_USER 如果用户是在NT系统上登录的话,那么这个域中将包含有用户名 
  PATH_INFO 在域名根目录外的到被请求页面的路径 
  PATH_TRANSLATED 请求的物理路径 
  QUERY_STRING 通过使用GET方法提交的任何数据,或是通过一个链接中的问号后面的数
据 
  REMOTE_ADDR 发出请求的机器的IP地址 
  REMOTE_HOST 如果存在,为请求者的转换名,否则的话,为包含这个IP地址的域 
  REMOTE_USER 访问者发送的用户名 
  REQUEST_METHOD 使用的REQUEST方法,即Post还是Get 
  SCRIPT_NAME 被请求的脚本的虚拟文件位置 
  SERVER_NAME 服务器主机名 
  SERVER_PORT 发送请求使用的端口号 
  SERVER_PORT_SECURE 如果请求是通过安全连接发送的,那么这个域中包含值1,否则的话
包含0 
  SERVER_PROTOCOL 使用的协议的版本号,即HTTP/11 
  SERVER_SOFTWARE 在服务器上运行的Web服务器软件的名称和版本 
  URL 被请求的页面的地址 
   
   
   
  5、Clientcertificate集合 
     能够准去的识别访问者的身份,这一点在电子商务WEB站点领域尤为重要,不过在个
人站点上用不到,所以在这儿笔者不做介绍。 
相关文章