ASP中使用ServerVariables集合详解(3)

发表于:2007-06-30来源:作者:点击数: 标签:
其他Request和Response技巧 现在,来看一下几个使用Request和Response对象的有用技巧,包括: · 连接、缓冲和页面重定向的管理。 · HTTP报头、缓存与“到期”页面的操作。 · 利用客户证书。 · 创建定制的日志文件消息。 1. 连接、缓冲和页面重定向的管理
     其他Request和Response技巧
  
    现在,来看一下几个使用Request和Response对象的有用技巧,包括:
  
    · 连接、缓冲和页面重定向的管理。
  
    · HTTP报头、缓存与“到期”页面的操作。
  
    · 利用客户证书。
  
    · 创建定制的日志文件消息。
  
    1. 连接、缓冲和页面重定向的管理
  
    ASP的一个很有用的特点就是使用户能够从一个ASP网页转向到另一个网页(ASP或HTML),或另一个源文件(例如一个ZIP文件或文本文件)。这对用户来说是透明的,实际上是浏览器做这个工作。当使用Response.Redirect方法来载入一个新的网页时,实际上是发送回一个特殊的HTTP报头到客户。此报头为:
  
    HTTP/1.1 302 Object Moved
    Location /newpath/newpage.asp
  
    浏览器读到此报头信息,并按Location值的指示载入页面。这在功能上与在Web页中使用客户端HTML<META>标记相同,例如:
  
  <META HTTP-EQUIV=”REFRESH” CONTENT=”0;URL=/newpath/newpage.asp”>
  这带来的一个问题是,服务器与用户之间的代理服务器可能会提供它自己的包含与新页面的链接的消息,而不是直接载入新页面。而且浏览器根据厂商和版本可能做同样的工作。这就去除了假定的透明,而且对用户来说一直收到的是错误信息,则对你的站点的访问变得比较麻烦。
  
    在发送诸如文本或HTML等任何页面内容后,我们就不能再使用Redirect方法。然而,一个看起来能够限制“代理服务器影响”的方法是,先确定没有输出(包括HTTP报头)被发送到客户。在ASP 2.0中,必须打开缓冲,然后使用Clear方法来清空缓冲区:
  
  Response.Buffer = True
  ‘Some condition to select the appropriate page:
  If Request.ServerVariables(“SERVER_PORT”) = 1856 Then
   StrNewPage = “/newpath/this_page.asp”
  Else
   StrNewPage = “/newpath/the_other_page.asp”
  End If
  Response.Clear
  Response.Redirect strNewPage
  
    在ASP 3.0中,缓冲缺省为打开,所以第一行可被忽略,但它是无害的,而且能确保我们的网页即使在ASP 2.0环境中也仍然能工作。
  与其使用这种类型的HTTP报头重定向,不如使用ASP 3.0的一个新特性,它允许我们通过Server对象的Transfer方法转换为执行另一个网页,我们将在以后进一步研究这个问题。
  

原文转自:http://www.ltesting.net