对

Headers的授权操作

当需要进行主页保护时，对于接受用户信息来确认是否授权进入该主页有四个Headers的内容是很有用的。AUTH_TYPE Header指示了用户进入主页的授权方式，AUTH_USER和LOGON_USER Header包含的是Windows NT用户的用户名信息。最后，作为基本的认证手段，AUTH_PASSWORD 包含了用户注册的密码信息。

注意

你可以利用Internet 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字段（相当于参数传递）来进行不同主页间信息传递。