Request 对象 属性和方法

网络整理 - 09-07

这两个对象是ASP所提供的内置对象中最常用的两个。在浏览器(或其他用户代理)和Web服务器之间,请求与响应中发生的信息交流可以通过ASP中的两个内置对象来进行访问和管理,这两个对象称为Request和Response对象。
      在ASP页中所要进行的工作几乎都要访问这两个对象,使用这两个对象的方式将影响页面的效率及可靠性。当然,它们的主要用途是访问用户发回到服务器的值,即从HTML页的<FORM>段获得或附在URL后面作为查询字符串,并创建合适的输出返回给用户,且它们可以共享很多相同的因素。例如两个对象都可以使用存储在客户端计算机上的cookie。
    
客户端和服务器的交流
      为节省篇幅,后面的内容中使用“浏览器”(browser)一词。但需要记住的是,能够访问Web页面的应用程序绝不仅只有浏览器,有许多特殊的应用程序从站点上下载网页,如为那些视力有缺陷用户设计的特殊的客户端程序或者是用通常的浏览器有其他困难的人。最显而易见的例子是搜索引擎用来访问Web上的站点的 robot。全面考虑这些因素,包括普通的Web浏览器,准确的词汇应该是用户代理(user agent)。

页面请求的对话
      当一个浏览器向Web站点提出页面请求时,显然必须告诉服务器,其请求的是哪一个页面。首先要做的是通过域名与服务器建立连接,然后提供所请求的页面的全路径和名称。为什么要全路径和名称?Web是一个无国界的环境,所以必须创造一个会话标识每个客户。
      这就意味着每当服务器完成向客户发送页面后,服务器就彻底忘记了这个客户。因此,当客户请求下一个页面时,与一个新的访问者是完全相同的。服务器无法记住这个客户,相应的,也就无法判断它们上次请求的页面是哪一个。因为,不能使用相对路径来提供一个页面,即使页面包含一个相对的链接也不行,例如:
      <A HREF=”Download.asp”>Next Page</A>
      浏览器将自动建立完整的新页面的URL,方法是使用当前页的域和路径;或使用页面<HEAD>段中的<BASE>元素,告诉浏览器一个页面中所有链接的其URL是什么。例如:
      <BASE HERF=http://www.wrox.com/Store>
      当把鼠标指向一个页面的链接时,可在浏览器的状态栏中看到。当前页面的路径和当前域名或基域名或基路径已经与请求的页面名结合在一起了。
1、 客户请求的细节
所请求页面的全路径和名称的组合是浏览器请求页面时发住服务器的唯一住处浏览器的请求也能包含浏览器宿主的住处和客户端运行的操作系统。实际的信息内容将随着浏览器的不同而有相应的变化,只有很少一部分能够由其他的应用程序如搜索引擎robot提供。为了更清楚地了解该信息,下面是从IE 5.0发出的一个对页面
Download.asp的请求信息:
    7/8/99 10:27:16 Sent GET /Store/Download.asp HTTP/1.1
      Accept: application/msword, application/vnd.ms-execl, application/vnd.ms-
      powerpoint, image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-
      comet, */*
      Accept-Language: en-us
      Encoding: gzip, deflate
      Referer:
      Cookie: VisitCount=2&LASTDATE=6%2F4%2F99+10%3A10%3A13+AM
      User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98)
      Host: 212.250.238.67
      Connection: Keep-Alive
      从中可以看出,这些信息中有关于用户代理和用户连接的细节(如缺省的语言),也有能够接受的文件或应用程序的类型列表,这些都是MIME类型的,在后面将会见到更多。浏览器能够接受几种图像文件及多种Microsoft Office文件类型。“标准”的文件类型,如tesx/html和text/text没有列在其中。文件列表中 */*表示可向浏览器发回任何类型的文件,由浏览器解释或通过一个插件(plug-in)应用程序来进行解释。
      cookie: 条目包含的cookie存放在客户端的计算机上,并仅对该域有效。假如请求是点击链接的结果,而不是在浏览器的地址栏直接输入URL,则Referer:条目被显示出来,它包含了链接页面的完整的URL。
      Host:条目包含客户计算机的IP地址或名称。然而,这还不足以准确辨别客户机。因为它们通过ISP连接时,IP地址是动态分配的,或者通过一个代理服务器连接时,IP地址是代理机的而不是实际的客户机的。
     
2、 服务器响应的细节信息
为响应上述的请求,并对匿名的浏览器(即用户不必提供用户名和访问口令)提供请求的页面,下面的内容是从服务器发往客户机的:
7/8/99 10:27:16 Received HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Connection: Keep-Alive
Date: Thu, 8 Jul 1999 10:27:16 GMT
Content-Type: text/html
Accept-Ranges: bytes
Content-Length: 2946
Last-Modified: Thu, 8 Jul 1999 10:27:16 GMT
Cookie: VisitCount=3&LASTDATE=7%2F8%2F99+10%3A27%3A16+AM
<HTML>
… rest of page …
</HTML>
可以看出服务器向客户端说明自己所用的软件及版本,第一行表明所使用的是HTTP协议,及返回码的状态。信息“200 OK”表示请求被接受并得到了满足。后面的信息是被返回的页面的细节,包括MIME类型(Content-Length:)、大小(字节)、最近更改时间,和返回客户端存储的cookie。响应中的其他信息是页面内容的信息流。