對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字段(相當于參數傳遞)來進行不同主頁間信息傳遞。