hinapub.com 下载 第2章请求和响应的处理 上一章介绍了安装设置的一些基本问题和ASP的使用,以及其所提供的内置对象。本章 将进一步研究两个最常用的对象。在浏览器(或其他用户代理)和web服务器之间,请求与响应 中发生的信息交流可以通过ASP中的两个内置对象来进行访问和管理,这两个对象称为 Request和 Response对象。 在ASP页中所要进行的工作几乎都要访问这两个对象,使用这两个对象的方式将影响页 面的效率及可靠性。当然,它们的主要用途是访问用户发回到服务器的值,即从HTML页的 <FORM>段获得或附在URL后面作为查询字符串,并创建合适的输出返回给用户,且它们可 以共享很多相同的因素。例如两个对象都可以使用存储在客户端计算机上的 cookie 因此,我们把本章分成两个独立的部分(每个对象一部分),并且首先从客户端与服务器之 间的信息交流入手,然后再研究每一个对象。这将更有助于理解它们之间的关系及其重要性。 因此,本章研究的内容是 ·客户端与服务器如何交流以传递Web页或其他资源 Request和 Response对象的细节,以及它们之间的共同点 如何通过一个窗体和查询字符串访问相应的值。 如何读入或创建 cookie并存放在客户端的计算机上 服务器的变量是什么?如何访问和修改HTTP报头 ·说明其他相关条目的变化,如客户的证书使用。 首先看一下客户浏览器(或“用户代理”)和ASP的web服务器之间交流的情况 2.1客户端和服务器的交流 当浏览器或其他的用户代理访问Web站点请求页面时,在客户服务器和web服务器之间就 产生了一个对话,我们将仔细研究这个问题,因为理解这个问题有助于掌握使用ASP Request和 Response对象的基本知识,进而才能进一步掌握ASP的更多知识 为节省篇幅,在本章及本书后面的内容中使用“浏览器”( browser)一词。但需要记 住的是,能够访问Web页面的应用程序绝不仅只有浏览器,有许多特殊的应用程序从站 点上下载网页,如为那些视力有缺陷用户设计的特殊的客户端程序或者是用通常的浏 览器有其他困难的人。最显而易见的例子是搜索引擎用来访问Web上的站点的 robot。全 面考虑这些因素,包括普通的web浏览器,淮确的词汇应该是用户代理( user agent)k 页面请求的对话 当一个浏览器向Web站点提出页面请求时,显然必须告诉服务器,其请求的是哪一个页 面。首先要做的是通过域名与服务器建立连接,然后提供所请求页面的全路径和名称。为什 么要全路径和名称?Web是一个无国界的环境,所以必须创造一个会话标识每个客户(将在下
下载 第2章 请求和响应的处理 上一章介绍了安装设置的一些基本问题和 A S P的使用,以及其所提供的内置对象。本章 将进一步研究两个最常用的对象。在浏览器 (或其他用户代理)和We b服务器之间,请求与响应 中发生的信息交流可以通过 A S P中的两个内置对象来进行访问和管理,这两个对象称为 R e q u e s t和R e s p o n s e对象。 在A S P页中所要进行的工作几乎都要访问这两个对象,使用这两个对象的方式将影响页 面的效率及可靠性。当然,它们的主要用途是访问用户发回到服务器的值,即从 H T M L页的 < F O R M >段获得或附在U R L后面作为查询字符串,并创建合适的输出返回给用户,且它们可 以共享很多相同的因素。例如两个对象都可以使用存储在客户端计算机上的 c o o k i e。 因此,我们把本章分成两个独立的部分 (每个对象一部分),并且首先从客户端与服务器之 间的信息交流入手,然后再研究每一个对象。这将更有助于理解它们之间的关系及其重要性。 因此,本章研究的内容是: • 客户端与服务器如何交流以传递 We b页或其他资源。 • Request和R e s p o n s e对象的细节,以及它们之间的共同点。 • 如何通过一个窗体和查询字符串访问相应的值。 • 如何读入或创建c o o k i e并存放在客户端的计算机上。 • 服务器的变量是什么?如何访问和修改 H T T P报头。 • 说明其他相关条目的变化,如客户的证书使用。 首先看一下客户浏览器(或“用户代理”)和ASP 的We b服务器之间交流的情况。 2.1 客户端和服务器的交流 当浏览器或其他的用户代理访问 We b站点请求页面时,在客户服务器和 We b服务器之间就 产生了一个对话,我们将仔细研究这个问题,因为理解这个问题有助于掌握使用 A S P的 R e q u e s t和R e s p o n s e对象的基本知识,进而才能进一步掌握 A S P的更多知识。 为节省篇幅,在本章及本书后面的内容中使用“浏览器”( b r o w s e r )一词。但需要记 住的是,能够访问We b页面的应用程序绝不仅只有浏览器,有许多特殊的应用程序从站 点上下载网页,如为那些视力有缺陷用户设计的特殊的客户端程序或者是用通常的浏 览器有其他困难的人。最显而易见的例子是搜索引擎用来访问We b上的站点的r o b o t。全 面考虑这些因素,包括普通的We b浏览器,准确的词汇应该是用户代理(user agent)。 页面请求的对话 当一个浏览器向 We b站点提出页面请求时,显然必须告诉服务器,其请求的是哪一个页 面。首先要做的是通过域名与服务器建立连接,然后提供所请求页面的全路径和名称。为什 么要全路径和名称? We b是一个无国界的环境,所以必须创造一个会话标识每个客户 (将在下
34Asp;高编程 Chinaopub.com 下载 章介绍ASP如何做到这点) 这就意味着每当服务器完成向客户发送页面后,服务器就彻底忘记了这个客户。因此, 当客户请求下一个页面时,与一个新的访问者是完全相同的。服务器无法记住这个客户,相 应的,也就无法判断它们上次请求的页面是哪一个。因此,不能使用相对路径来提供一个页 面,即使页面包含一个相对的链接也不行,例如: <A HREF="Download. asp>Next Page</A> 浏览器将自动建立完整的新页面的URL,方法是使用当前页的域和路径:或使用页面 <HEAD>段中的<BASE>元素,告诉浏览器一个页面中所有链接的基URL是什么。例如 <base Href=Http: //wWw. wrox com/store'> Professional\ 当把鼠标指向一个页面的链接时,可在浏览器 Source ode Ofice 2000 Pr 的状态栏中看到如图2-1所示的情况。当前页面的路 Excel 2000 VE Suppo 径和当前域名或基域名已经与请求的页面名结合在 llahttp://www.wrox.com/store/downioada 起了。 1.客户请求的细节 图2-1状态栏中显示的当前页面路径 所请求页面的全路径和名称的组合是浏览器请求页面时发往服务器的唯一信息。浏览器 的请求也能包含浏览器宿主的信息和客户端运行的操作系统。实际的信息内容将随着浏览器 的不同而有相应的变化,只有很少一部分能够由其他的应用程序如搜索引擎 robot!提供。为了 更清楚地了解该信息,下面是从IE5.0发出的一个对页面htp://www.wrox.com/Store/ Download. asp的请求信息 7/8/99 10: 27: 16 Sent Get /storE/dowmload. asp Http/1.1 Accept: application/msword, application/vnd. ms-excel, application/vnd. m. owerpoint, image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x Referer:http://www.wroxcom/main_menu.asp User-Agent: Mozilla/4.0(compatible: MSIE 5.0: Windows 98) 50.238 Connection: Ke 从中可以看出,这些信息中有关于用户代理和用户连接的细节(如缺省的语言),也有能够 接受的文件或应用程序的类型列表,这些都是MIME类型的,在后面将会见到更多。浏览器能 够接受几种图像文件及多种 Microsoft office文件类型。“标准”的文件类型,如 text/html和 text/text没有列在其中。文件列表中**表示可向浏览器发回任何类型的文件,由浏览器解释或 通过一个插件(plug-in)应用程序来进行解释。 cookie:条目包含的 cookie存放在客户端的计算机上,并仅对该域有效。假如请求是点击 链接的结果,而不是在浏览器的地址栏直接输入URL,则 Referer:条目被显示,它包含了 接页面的完整的URL Host:条目包含客户计算机的IP地址或名称。然而,这还不足以准确辨别客户机 因为它们通过ISP连接时,IP地址是动态分配的,或者通过一个代理服务器连接时 IP地址是代理机的而不是实际的客户机的 2.服务器响应的细节信息 为响应上述的请求,并对匿名的浏览器(即用户不必提供用户名和访问口令)提供请求的页
一章介绍A S P如何做到这点)。 这就意味着每当服务器完成向客户发送页面后,服务器就彻底忘记了这个客户。因此, 当客户请求下一个页面时,与一个新的访问者是完全相同的。服务器无法记住这个客户,相 应的,也就无法判断它们上次请求的页面是哪一个。因此,不能使用相对路径来提供一个页 面,即使页面包含一个相对的链接也不行,例如: 浏览器将自动建立完整的新页面的 U R L,方法是使用当前页的域和路径;或使用页面 < H E A D >段中的< B A S E >元素,告诉浏览器一个页面中所有链接的基 U R L是什么。例如: 当把鼠标指向一个页面的链接时,可在浏览器 的状态栏中看到如图 2 - 1所示的情况。当前页面的路 径和当前域名或基域名已经与请求的页面名结合在 一起了。 1. 客户请求的细节 所请求页面的全路径和名称的组合是浏览器请求页面时发往服务器的唯一信息。浏览器 的请求也能包含浏览器宿主的信息和客户端运行的操作系统。实际的信息内容将随着浏览器 的不同而有相应的变化,只有很少一部分能够由其他的应用程序如搜索引擎 r o b o t提供。为了 更清楚地了解该信息,下面是从 IE 5.0 发出的一个对页面 h t t p : / / w w w. w r o x . c o m / S t o r e / D o w n l o a d . a s p的请求信息: 从中可以看出,这些信息中有关于用户代理和用户连接的细节 (如缺省的语言),也有能够 接受的文件或应用程序的类型列表,这些都是 M I M E类型的,在后面将会见到更多。浏览器能 够接受几种图像文件及多种 Microsoft Off i c e文件类型。“标准”的文件类型,如 t e x t / h t m l和 t e x t / t e x t没有列在其中。文件列表中 * / *表示可向浏览器发回任何类型的文件,由浏览器解释或 通过一个插件( p l u g - i n )应用程序来进行解释。 c o o k i e:条目包含的c o o k i e存放在客户端的计算机上,并仅对该域有效。假如请求是点击 链接的结果,而不是在浏览器的地址栏直接输入 U R L,则R e f e r e r:条目被显示,它包含了链 接页面的完整的U R L。 H o s t:条目包含客户计算机的I P地址或名称。然而,这还不足以准确辨别客户机。 因为它们通过 I S P连接时,I P地址是动态分配的,或者通过一个代理服务器连接时, I P地址是代理机的而不是实际的客户机的。 2. 服务器响应的细节信息 为响应上述的请求,并对匿名的浏览器 (即用户不必提供用户名和访问口令 )提供请求的页 34计计ASP 3 高级编程 下载 图2-1 状态栏中显示的当前页面路径
chinaopubcomm. 第2章请求和响应的处里35 下载 面,下面的内容是从服务器发往客户机的 7/8/9910:27:16 Received httP/1.1200OK licrosoft-IIS/5. 0 Date: Thu, 8 Jul 1999 10: 27: 16 GMT pe: text/html t-Modi fied: Thu, 8 Jul 1999 10: 27: 16 GMT ookie: visitcountx 3&LASTDATE=782F892F99+10%3A2763A16+AM est of pag </HTML> 可以看出服务器向客户端说明自己所用的软件及版本,第一行表明所使用的是HTTP协议, 及返回码的状态。信息“200OK”表示请求被接受并得到了满足。后面的信息是被返回的页 面的细节,包括MIME类型( Content- Length)、大小(字节)、最近更改的时间,和返回客户端 存储的 cookie。响应中的其他信息是页面内容的信息流 在某些情况下,服务器响应一个请求后,不能返回一个页面,也许因为页面不存在,或 者客户没有相应权限来访问它。我们将在本书后续章节讨论安全问题。现在,对于请求页面 不存在的情况(例如用户在浏览器的地址栏输入了错误的URL),返回的信息开头为 7/8/99 14: 27: 16 Received Http/1.1 404 Not Found Server: Microsoft-IIS/5. 0 这里,状态码和信息表明客户请求的页面无法找到。浏览器可使用这个信息向用户显示 相应的信息(这种情况在IE50中不显示服务器的响应信息,而显示相应“帮助性”的错误提 示页面),也可显示服务器创建的缺省页面(依赖于服务器的设置) 至此,我们已经看到了客户机与服务器交互作用中的一些细节,下面介绍ASP对象 Request和 Response如何把这些转换成相应的值。 22 Request和 Response对象 在ASP中能够应用客户请求和服务器响应的细节是通过ASP内置的 Request和 Response对 象来实现的 Request对象:为脚本提供了当客户端请求一个页面或者传递一个窗体时,客户端提供 的全部信息。这包括能指明浏览器和用户的HTTP变量,在这个域名下存放在浏览器中 的 cookie,任何作为查询字符串而附于URL后面的字符串或页面的<FORM>段中的 HIML控件的值。也提供使用 Secure Socket Layer(SSL或其他加密通信协议的授权访问, 及有助于对连接进行管理的属性。 Response对象:用来访问服务器端所创建的并发回到客户端的响应信息。为脚本提供 HTTP变量,指明服务器和服务器的功能和关于发回浏览器的内容的信息以及任何将为 这个域而存放在浏览器里新的 cookie。它也提供了一系列的方法用来创建输出,例如无 处不在的 Response. Write方法 在这一节中,首先概述 Request和 Response对象的成员,然后继续探讨如何使用它们完成 创建任务,以及如何使用每个对象的成员的细节 221 Request对象成员的概述 本节将给出 Request对象的所有成员的主要说明
面,下面的内容是从服务器发往客户机的: 可以看出服务器向客户端说明自己所用的软件及版本,第一行表明所使用的是H T T P协议, 及返回码的状态。信息“ 200 OK”表示请求被接受并得到了满足。后面的信息是被返回的页 面的细节,包括 M I M E类型( C o n t e n t - L e n g t h : )、大小(字节)、最近更改的时间,和返回客户端 存储的c o o k i e。响应中的其他信息是页面内容的信息流。 在某些情况下,服务器响应一个请求后,不能返回一个页面,也许因为页面不存在,或 者客户没有相应权限来访问它。我们将在本书后续章节讨论安全问题。现在,对于请求页面 不存在的情况(例如用户在浏览器的地址栏输入了错误的 U R L ),返回的信息开头为: 这里,状态码和信息表明客户请求的页面无法找到。浏览器可使用这个信息向用户显示 相应的信息(这种情况在IE 5.0中不显示服务器的响应信息,而显示相应“帮助性”的错误提 示页面),也可显示服务器创建的缺省页面 (依赖于服务器的设置)。 至此,我们已经看到了客户机与服务器交互作用中的一些细节,下面介绍 A S P对象 R e q u e s t和R e s p o n s e如何把这些转换成相应的值。 2.2 Request和R e s p o n s e对象 在A S P中能够应用客户请求和服务器响应的细节是通过 A S P内置的R e q u e s t和R e s p o n s e对 象来实现的。 • R e q u e s t对象:为脚本提供了当客户端请求一个页面或者传递一个窗体时,客户端提供 的全部信息。这包括能指明浏览器和用户的 H T T P变量,在这个域名下存放在浏览器中 的c o o k i e,任何作为查询字符串而附于 U R L后面的字符串或页面的 < F O R M >段中的 H T M L控件的值。也提供使用Secure Socket Layer (SSL)或其他加密通信协议的授权访问, 及有助于对连接进行管理的属性。 • R e s p o n s e对象:用来访问服务器端所创建的并发回到客户端的响应信息。为脚本提供 H T T P变量,指明服务器和服务器的功能和关于发回浏览器的内容的信息以及任何将为 这个域而存放在浏览器里新的 c o o k i e。它也提供了一系列的方法用来创建输出,例如无 处不在的R e s p o n s e . Wr i t e方法。 在这一节中,首先概述 R e q u e s t和R e s p o n s e对象的成员,然后继续探讨如何使用它们完成 创建任务,以及如何使用每个对象的成员的细节。 2.2.1 Request对象成员的概述 本节将给出R e q u e s t对象的所有成员的主要说明。 第 2章 请求和响应的处理计计35 下载
36Ap3高程 下载 1. Request对象的集合 Request对象提供了5个集合,可以用来访问客户端对web服务器请求的各类信息,这些集 合如表2-1所示 表2-1 Request对象的集合及说明 集合名称 ClientCertificate 当客户端访问一个页面或其他资源时,用来向服务器表明身份的客户证书的所 有字段或条目的数值集合,每个成员均是只读 Cookies 根据用户的请求,用户系统发出的所有 cookie的值的集合,这些 Cookie仅对相 应的域有效,每个成员均为只读 METHOD的属性值为POST时,所有作为请求提交的<FORM>段中的HTML控 件单元的值的集合,每个成员均为只读 Query String 依附于用户请求的URL后面的名称/数值对或者作为请求提交的且 METHOD 属性值为GET(或者省略其属性)的,或<FORM>中所有HTML控件单元的值,每 个成员均为只读 随同客户端请求发出的HTP报头值,以及Web服务器的几种环境变量的值的 集合,每个成员均为只读 2. Request对象的属性 Request对象唯一的属性及说明如表2-2所示,它提供关于用户请求的字节数量的信息,它 很少用于ASP页,我们通常关注指定值而不是整个请求字符串。 表2-2 Request.对象的属性及说明 属性 TotalBytes 只读,返回由客户端发出的请求的整个字节数量 3 Request.对象的方法 Request对象唯一的方法及说明如表2-3所示,它允许访问从一个<FORM>段中传递给服务 器的用户请求部分的完整内容。 表2-3 Request对象的方法及说明 当数据作为POST请求的一部分发往服务器时,从客户请求中获得con 据,返回一个 Variant数组(或者 Safe Array)。如果ASP代码已经引用了 Form 集合,这个方法就不能用。同样,如果用了 Binary Read方法,就不能访问 Request. Forn集合 2.2.2 Response对象成员概述 这一节概要介绍所有的 Response对象成员,及每个成员的主要说明。 1. Response对象的集合 Response对象只有一个集合,如表2-4所示,该集合设置希望放置在客户系统上的 cookie 的值,它直接等同于 Request. Cookies集合。 表24 Response对象的集合及说明 集合名称 Cookies 在当前响应中,发回客户端的所有 cookie的值,这个集合为只写
1. Request对象的集合 R e q u e s t对象提供了5个集合,可以用来访问客户端对 We b服务器请求的各类信息,这些集 合如表2 - 1所示。 表2-1 Request对象的集合及说明 集合名称 说 明 C l i e n t C e r t i f i c a t e 当客户端访问一个页面或其他资源时,用来向服务器表明身份的客户证书的所 有字段或条目的数值集合,每个成员均是只读 C o o k i e s 根据用户的请求,用户系统发出的所有 c o o k i e的值的集合,这些C o o k i e仅对相 应的域有效,每个成员均为只读 F o r m M E T H O D的属性值为P O S T时,所有作为请求提交的 < F O R M >段中的H T M L控 件单元的值的集合,每个成员均为只读 Q u e r y S t r i n g 依附于用户请求的U R L后面的名称/数值对或者作为请求提交的且 M E T H O D 属性值为 G E T (或者省略其属性 )的,或< F O R M >中所有H T M L控件单元的值,每 个成员均为只读 S e r v e r Va r i a b l e s 随同客户端请求发出的HTTP 报头值,以及We b服务器的几种环境变量的值的 集合,每个成员均为只读 2. Request对象的属性 R e q u e s t对象唯一的属性及说明如表 2 - 2所示,它提供关于用户请求的字节数量的信息,它 很少用于A S P页,我们通常关注指定值而不是整个请求字符串。 表2-2 Request对象的属性及说明 属 性 说 明 To t a l B y t e s 只读,返回由客户端发出的请求的整个字节数量 3. Request对象的方法 R e q u e s t对象唯一的方法及说明如表 2 - 3所示,它允许访问从一个 < F O R M >段中传递给服务 器的用户请求部分的完整内容。 表2-3 Request对象的方法及说明 方 法 说 明 B i n a r y R e a d (c o u n t) 当数据作为P O S T请求的一部分发往服务器时,从客户请求中获得 c o u n t字节的数 据,返回一个Va r i a n t数组(或者S a f e A r r a y )。如果A S P代码已经引用了R e q u e s t . F o r m 集合,这个方法就不能用。同样,如果用了 B i n a r y R e a d方法,就不能访问 R e q u e s t . F o r m集合 2.2.2 Response对象成员概述 这一节概要介绍所有的R e s p o n s e对象成员,及每个成员的主要说明。 1. Response对象的集合 R e s p o n s e对象只有一个集合,如表 2 - 4所示,该集合设置希望放置在客户系统上的 c o o k i e 的值,它直接等同于R e q u e s t . C o o k i e s集合。 表2-4 Response对象的集合及说明 集合名称 说 明 C o o k i e s 在当前响应中,发回客户端的所有 c o o k i e的值,这个集合为只写 36计计ASP 3 高级编程 下载
第2请求和响应的处里37 下载 2. Response对象的属性 Response对象也提供一系列的属性,可以读取(多数情况下)和修改,使响应能够适应请求 这些由服务器设置,我们不需要设置它们。需要注意的是,当设置某些属性时,使用的语法 可能与通常所使用的有一定的差异。这些属性如表2-5所示。 表2-5 Response对象的属性及说明 Buffer=True False 读/写,布尔型,表明由一个ASP页所创建的输出是否一直存放在IS缓冲区, 直到当前页面的所有服务器脚本处理完毕或 Flush、End方法被调用。在任何 输出(包括HTTP报头信息)送往IS之前这个属性必须设置。因此在asp文件中, 这个设置应该在<%@ LANGUAGE=%>语句后面的第一行。ASP3.0缺省设 置缓冲为开(True),而在早期版本中缺省为关( False) Cache Control"setting 读/写,字符型,设置这个属性为“ Public”允许代理服务器缓存页面,如 为“ Private”则禁止代理服务器缓存的发生 读/写,字符型,在由服务器为每个响应创建的 Http Content-type报头中 附上所用的字符集名称(例如:ISO- LATIN-7) Content Type ="MIME-type 读/写,字符型,指明响应的HTTP内容类型,标准的MIME类型(例如 “ text/xml”或者“ Image/gif”)。假如省略,表示使用MIME类型“ text/html 内容类型告诉浏览器所期望内容的类型 读/写,数值型,指明页面有效的以分钟计算的时间长度,假如用户请求其 有效期满之前的相同页面,将直接读取显示缓冲中的内容,这个有效期间过 后,页面将不再保留在私有(用户)或公用(代理服务器)缓冲中 Expires Absolute# date/time读/写,日期/时间型,指明当一个页面过期和不再有效时的绝对日期和时间 Is ClientConnected 只读,布尔型,返回客户是否仍然连接和下载页面的状态标志。在当前的 页面已执行完毕之前,假如一个客户转移到另一个页面,这个标志可用来中 上处理(使用 Response.End方法) PICS("PICS.Label-string 只写,字符型,创建一个PCS报头并将之加到响应中的HTTP报头中 PCS报头定义页面内容中的词汇等级,如暴力、性、不良语言等 Status="Code 读/写,字符型,指明发回客户的响应的HTP报头中表明错误或页面处理 是否成功的状态值和信息。例如“200K”和“404 Not Found” 3. Response对象的方法 最后, Response对象提供一系列的方法,如表2-6所示,允许直接处理为返给客户端而创 建的页面内容。 表26 Response对象的方法及说明 AddHeader("name","content")通过使用name和Content值,创建一个定制的HTTP报头,并增加到响应之 中。不能替换现有的相同名称的报头。一旦已经增加了一个报头就不能被删 除。这个方法必须在任何页面内容(即text和HTML被发往客户端前使用 g("string") 当使用“W3 C Extended log file format”文件格式时,对于用户请求的 Web服务器的日志文件增加一个条目。至少要求在包含页面的站点的 Binary Write( Safe Array) 在当前的HTTP输出流中写入Variant类型的SafeArray,而不经过任何字符 转换。对于写入非字符串的信息,例如定制的应用程序请求的二进制数据或 组成图像文件的二进制字节,是非常有用的
2. Response对象的属性 R e s p o n s e对象也提供一系列的属性,可以读取(多数情况下)和修改,使响应能够适应请求。 这些由服务器设置,我们不需要设置它们。需要注意的是,当设置某些属性时,使用的语法 可能与通常所使用的有一定的差异。这些属性如表 2 - 5所示。 表2-5 Response对象的属性及说明 属 性 说 明 B u ff e r = Tr u e | F a l s e 读/写,布尔型,表明由一个A S P页所创建的输出是否一直存放在 I I S缓冲区, 直到当前页面的所有服务器脚本处理完毕或 F l u s h、E n d方法被调用。在任何 输出(包括H T T P报头信息)送往I I S之前这个属性必须设置。因此在 . a s p文件中, 这个设置应该在<%@ L A N G U A G E = . . . % >语句后面的第一行。 ASP 3.0缺省设 置缓冲为开( Tr u e ),而在早期版本中缺省为关 ( F a l s e ) CacheControl "s e t t i n g" 读/写,字符型,设置这个属性为“ P u b l i c”允许代理服务器缓存页面,如 为“P r i v a t e”则禁止代理服务器缓存的发生。 C h a r s e t = "v a l u e" 读/写,字符型,在由服务器为每个响应创建的 HTTP Content-Type 报头中 附上所用的字符集名称(例如:I S O - L AT I N - 7 ) Content Type ="M I M E - t y p e" 读/写,字符型,指明响应的 H T T P内容类型,标准的M I M E类型(例如 “t e x t / x m l”或者“I m a g e / g i f”)。假如省略,表示使用M I M E类型“t e x t / h t m l”, 内容类型告诉浏览器所期望内容的类型 Expires m i n u t e s 读/写,数值型,指明页面有效的以分钟计算的时间长度,假如用户请求其 有效期满之前的相同页面,将直接读取显示缓冲中的内容,这个有效期间过 后,页面将不再保留在私有(用户)或公用(代理服务器)缓冲中 Expires Absolute # d a t e [ t i m e ]# 读/写,日期/时间型,指明当一个页面过期和不再有效时的绝对日期和时间 I s C l i e n t C o n n e c t e d 只读,布尔型,返回客户是否仍然连接和下载页面的状态标志。在当前的 页面已执行完毕之前,假如一个客户转移到另一个页面,这个标志可用来中 止处理(使用R e s p o n s e . E n d方法) P I C S ( " P I C S -L a b e l - s t r i n g" 只写,字符型,创建一个PICS 报头并将之加到响应中的HTTP 报头中, PICS 报头定义页面内容中的词汇等级,如暴力、性、不良语言等 S t a t u s = "Code message" 读/写,字符型,指明发回客户的响应的 HTTP 报头中表明错误或页面处理 是否成功的状态值和信息。例如“ 200 OK”和“404 Not Found” 3. Response对象的方法 最后,R e s p o n s e对象提供一系列的方法,如表 2 - 6所示,允许直接处理为返给客户端而创 建的页面内容。 表2-6 Response对象的方法及说明 方 法 说 明 A d d H e a d e r (" n a m e " , " c o n t e n t ") 通过使用n a m e和C o n t e n t值,创建一个定制的H T T P报头,并增加到响应之 中。不能替换现有的相同名称的报头。一旦已经增加了一个报头就不能被删 除。这个方法必须在任何页面内容 (即t e x t和H T M L )被发往客户端前使用 A p p e n d To L o g (" s t r i n g ") 当使用“W3C Extended Log File Format”文件格式时,对于用户请求的 We b服务器的日志文件增加一个条目。至少要求在包含页面的站点的 “Extended Properties”页中选择“URI Stem” B i n a r y Wr i t e (S a f e A rr a y) 在当前的H T T P输出流中写入Va r i a n t类型的S a f e A r r a y,而不经过任何字符 转换。对于写入非字符串的信息,例如定制的应用程序请求的二进制数据或 组成图像文件的二进制字节,是非常有用的 第 2章 请求和响应的处理计计37 下载