ASP内置对象Request和Response详解
2008-02-23 05:23:28来源:互联网 阅读 ()
在ASP页中所要进行的工作几乎都要访问这两个对象,使用这两个对象的方式将影响页面的效率及可靠性。当然,他们的主要用途是访问用户发回到服务器的值,即从HTML页的<FORM>段获得或附在URL后面作为查询字符串,并创建合适的输出返回给用户,且他们能够共享很多相同的因素。例如两个对象都能够使用存储在客户端电脑上的cookie。
因此,我们把内容分成两个单独的部分(每个对象一部分),并且首先从客户端和服务器这间的信息交流入手,然后再研究每一个对象。
研究的内容是:
· 客户端和服务器如何交流以传递Web或其他资源。
· Request和Response对象的细节,连同他们之间的一起点。
· 如何通过一个窗体和查询字符串访问相应的值。
· 如何读入或创建cookie并存放在客户端的电脑上。
· 服务器的变量是什么?如何访问和修改HTTP报头。
· 说明其他相关条目的变化,如客户的证书使用。
客户端和服务器的交流
为节省篇幅,后面的内容中使用“浏览器”(browser)一词。但需要记住的是,能够访问Web页面的应用程式绝不但只有浏览器,有许多特别的应用程式从站点上下载网页,如为那些视力有缺陷用户设计的特别的客户端程式或是用通常的浏览器有其他困难的人。最显而易见的例子是搜索引擎用来访问Web上的站点的robot。全面考虑这些因素,包括普通的Web浏览器,准确的词汇应该是用户代理(user agent)。
页面请求的对话
当一个浏览器向Web站点提出页面请求时,显然必须告诉服务器,其请求的是哪一个页面。首先要做的是通过域名和服务器建立连接,然后提供所请求的页面的全路径和名称。为什么要全路径和名称?Web是个无国界的环境,所以必须创造一个会话标识每个客户(将在以后介绍ASP如何做到这点)。
这就意味着每当服务器完成向客户发送页面后,服务器就完全忘记了这个客户。因此,当客户请求下一个页面时,和一个新的访问者是完全相同的。服务器无法记住这个客户,相应的,也就无法判断他们上次请求的页面是哪一个。因为,不能使用相对路径来提供一个页面,即使页面包含一个相对的链接也不行,例如:
<A HREF=”Download.asp”>Next Page</A> |
浏览器将自动建立完整的新页面的URL,方法是使用当前页的域和路径;或使用页面<HEAD>段中的<BASE>元素,告诉浏览器一个页面中任何链接的其URL是什么。例如:
<BASE HERF=http://www.wrox.com/Store> |
当把鼠标指向一个页面的链接时,可在浏览器的状态栏中看到。当前页面的路径和当前域名或基域名或基路径已和请求的页面名结合在一起了。
1、客户请求的细节
所请求页面的全路径和名称的组合是浏览器请求页面时发住服务器的唯一住处浏览器的请求也能包含浏览器宿主的住处和客户端运行的操作系统。实际的信息内容将随着浏览器的不同而有相应的变化,只有很少一部分能够由其他的应用程式如搜索引擎robot提供。为了更清楚地了解该信息,下面是从IE 5.0发出的一个对页面http://www.wrox.com/Store/
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: http://ww.wrox.com/main_menu.asp Cookie: VisitCount=2&LASTDATE=6/4/99 10:10:13 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/8/99 10:27:16 AM <HTML> … rest of page … </HTML> |