对Headers的授权操作
当需要进行主页保护时,对于接受用户信息来确认是否授权进入该主页有四个Headers的内容是很有用的。AUTH_TYPE Header指示了用户进入主页的授权方式,AUTH_USER和LOGON_USER Header包含的是Windows NT用户的用户名信息。最后,作为基本的认证手段,AUTH_PASSWORD 包含了用户注册的密码信息。
注意
你可以利用Inte.net Service Manager来建立密码保护的主页。最简单的设置密码保护的方式是右键该文件名,选择属性,然后文件安全表。对一个整个网站或者目录进行密码保护,右键网站或者目录,同样选择属性,然后选择目录安全表。
你可以或者选择基本安全认证或者是NT Challenge和Response。后者由于运用密钥技术对密码传送进行加密,因此显然更加安全。但是后者需要浏览器支持,而前者基本上支持所有通用浏览器。
例如,下面Active Server Page将对用户身份进行检验,看其是否可以进入主页。这是利用AUTH_TYPE Header来完成的。
这个Headers有两个主要的变量:basic针对于基本认证默认,或者NTLM对应于NT Challenge和Response模式。(LM代表LAN Manager--微软的一种NT前的操作系统),然后会显示用户的帐号。
<HTML>
<HEAD><TITLE>密码保护</TITLE></HEAD>
<BODY>
<%
IF Request.ServerVariables(“AUTH_TYPE”)=“Basic” THEN
%>
你已经利用基本认证方式注册进入迈至科网络ASP示例程序。
你的帐号是<%=Request.ServerVariables(“LOGON_USER”)%>
<% ELSE %>
你正在利用NT Challenge和Response模式进入迈至科网络ASP示例程序。
你的帐号是<%=Request.ServerVariables(“LOGON_USER”)%>
<% END IF %>
</BODY>
</HTML>
运行时会首先出现一个对话框要求输入帐号密码,正确后会根据你所用的认证模式显示相应字段(见图14.5)。
图14.5 一个密码保护页
修改Content-Type Header
Content -Type Header指示了响应文本的媒体形式,(MIME类型)。通常的例子是”text/HTML”, “image/gif”, “application/msword”, 或者”text/rtf”,你可以使用Response对象的ContentType属性来设置它。
最简单的例子应用是将Content-type设置为text/plain,那么将显示主页的源代码而不是作为HTML应该显示的格式。下面这个例子:
<%
Response.ContentType=“text/plain”
%>
<HTML>
<HEAD><TITLE>HTML文本</TITLE></HEAD>
<BODY>
<H1>迈至科公司网络ASP示例之HTML文本</h1>
</BODY>
</HTML>
你会发现,所有文本显示在浏览器上而不只是HTML应该显示的那一句话。
状态代码
尽管Response对象的Status属性并不修改Header,但是由于它可以被用来限定一个HTTP响应的状态码,完全有理由在这里讨论它。
不管什么时候服务端响应一个请求,首先都是发送一行状态代码。状态代码为三位数字,下面是5种状态代码含义列表:
■1xx信息:这种状态码主要是实验性的。
■2xx成功:这种状态信息是说明请求已经被成功接受并响应,例如:状态码200表示主页请求被完全成功的接受。
■3xx重定向。 这个状态码指示一些接受请求前必须了解的一些其后面进程的信息,例如:状态码301说明该主页已经转移到了其他地址,这时浏览器会自动转向新的地址。
■4xx客户端错误:这个状态码表示浏览器发出的是错误的请求,例如:404指的是浏览器请求的主页是不存在的。
5xx服务端错误:这种状态码表明服务器响应出现了问题,例如,503指当前服务端遇到了无法应付的错误。
注意
如果想要了解全部状态码的含义,请参看http://w3.org
你可以利用Resposne对象的Status属性来限定响应的状态码。例如,如果有人尝试星期三访问一个ASP主页,就发送一个401没有授权的信息(显示在密码型对话框中)。
<%
IF WEEKDAYNAME(WEEKDAY(DATE))=“Wednesday” THEN
Response.Status=“401 没有授权”
Response.End
ELSE
%>
<HTML>
<HEAD><TITLE>不是星期三</TITLE></HEAD>
欢迎访问迈至科网络ASP示例之状态码应用<hr>
今天不是星期三
</BODY>
</HTML>
<% END IF %>
总结
这章主要介绍Request和Response对象,这是Active Server Page最重要的两种对象。你应当已经学会了使用Respose对象利用缓存区来输出,同时学会了很多种方法来处理运行时间较长和内容过大的主页。最后,了解了一些对Headers的操作以及相应系统变量处理。
这一章中,你所学的方法、集合和属性都是针对于单一的Active Server Pages, 当然,作为一套站点系统,多主页之间的相互处理更加重要,这里面通过Form传递信息是很重要的,下一章你就可以详细学会这些,通过Form或者利用Query字段(相当于参数传递)来进行不同主页间信息传递。