网络编程
位置:首页>> 网络编程>> Asp编程>> ASP中ServerVariables集合用法详解(3)

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

作者:CODEOF 来源:21tx.com 发布时间:2007-09-14 10:26:00 

标签:ServerVariables,asp

其他有用的ServerVariables集合的值
  
    可以访问和使用ServerVariables集合中的任何一成员,控制ASP页面响应一个请求的方式。可以检查一个浏览者访问站点时使用的是否是缺省端口80或还是另一个。在这个例子里,寻找通过端口443的访问——这个端口提供的是安全套接字层(Secure Socket Layer,SSI)访问(和其他的协议),且将它们重定向到一个相应的页面。


 If Request.ServerVariables(“SERVER_PORT”) = “443”) Then 
  Response.Redirect “/securesite/default.asp” ‘Secure user 
  Else 
  Response.Redirect “/normalsite/default.asp” ‘Non-secure user 
  End If 


 假如要求浏览者注册且由服务器验证(而不是允许他们在Web服务器的IUSER帐号下匿名访问,这个问题将在后面章节中详细讨论),可以查询用户名称,来判定正在与我们打交道的用户是谁,是否装载页面给该用户。例如,下面的这个代码将只向名为Administrator的用户显示管理链接。


 <A HREF=”dispcnfg.asp”>Change Display Configuration</A> 
   
  <A HREF=”dispcolr.asp”>Change Display Colors</A> 
   
  <A HREF=”keyboard.asp”>Change Keyboard Configuration</A> 
   
  <% 
  If Request.ServerVariables(“AUTH_USER”) _ 
  = Ucase(Request.ServerVariables(“SERVER_NAME”)) & “\Administrator” Then 
  %> 
  <A HREF=”allusers.asp”>Administer All Users</A> 
   
  <A HREF=”usrlogon.asp”>Administer Logon Information</A> 
  <% 
  End If 
  %> 


 注意ASP不填写ServerVariables集合直到你访问其中的一个成员。首次访问该集合的一个成员将使IIS得到它的全部,应只在需要时才使用ServerVariables集合。 

 其他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方法转换为执行另一个网页,我们将在以后进一步研究这个问题。

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com