Posted: 2005/1月/07 9:35上午 | IP記錄
|
|
|
處理主頁的Headers
瀏覽器的請求和服務端的響應都包含headers,Headers提供了有關請求和響應的附加信息,也包括了瀏覽器生成請求和服 務端提供響應的過程信息。
Active Server Pages包含了相當多的集合和方法來幫助你維護headers。這些方法一部分對應於特定的任務,例如提供了站點內容分級以及 站點限期時間等功能,其他的方法和集合允許你進行一般的headers的維護。以下部分詳細介紹如何使用這些集合方法來影響he aders。
接受headers
當瀏覽器在服務端接受到一個主頁時,這個請求就包括了相當數量的headers,你可以利用request對象的ServerV ariable集合來接受這些headers,ServerVariable集合既包括了headers也包括了服務端的一些其 他信息。下面的例子將ServerVariable集合的所有內容名稱顯示出來了。
<HTML>
<HEAD><Title>服務端變量</Title></HEAD>
<BODY>
<%
For Each name IN Request.ServerVariables
Response.write(「<p><b>」&name&」</b> :」)
Response.write(Request.ServerVariables(name))
NEXT
%>
</BODY>
</HTML>
顯示結果如圖14.3所示。
可以看出,ServerVariables集合包含了很多各種類型信息,在附錄A「快速ASP對像和組件參考」中包含了標準的h eaders以及Server變量的列表。下列解釋幾個最為常用的:
■HTTP_REFERER.當某人通過鏈接到達當前頁時,HTTP_REFERER header就保存了這個用戶的來源,例如,如果你想知道用戶有多少是從yahoo中訪問這個站點,就可以利用HTTP_REF ERER來獲取這樣的信息。
■HTTP_USER_AGENT. 這個Header指示了用戶訪問你的站點所用的網絡瀏覽器的類型,當你需要瞭解你的網站主要客戶群使用何種瀏覽器,你就可以利用 這個Header中進行瞭解。
■Remote_Addr.這個header包括了訪問者的IP地址,這個地址可以使我們知道訪問者的初始來源,例如是MIT的 學生或者是美國在線的用戶。
■QUERY_STRING. QUERY_STRING變量包含的是輸入網絡地址後問號後面所帶的參數。這個變量的詳細使用方法請見15章 「處理多個Active Server Page」
■SCRIPT_NAME. 這個變量包含的是當前Active Server Page的虛擬路徑,進行自己的引用連接時可能會用到。
■SERVER_NAME. 這個變量包含的是Server的網址。
■PATH_TRANSLATED. 這個變量包含的是當前Active Server Page的真實地址。
現在版本的Internet Explorer(3.0版和4.0版)在請求中包含下面的Headers.
■HTTP_UA_COLOR. 這個Header包含的是瀏覽器可以顯示多少種顏色。
■HTTP_UA_CPU. 這個Header包含的是執行瀏覽器的電腦的CPU型號。
■HTTP_UA_OS. 指的是瀏覽器所在的操作系統。
■HTTP_UA_PIXELS. 指的是瀏覽器所用的電腦的分辨率。
圖14.3 ServerVariables集合
注意
請不要依賴以上的幾個Headers,因為那只適用於windows95下的IE3.0和IE4.0。
你當然可以根據需要利用ServerVariables集合只是去接受特定的header變量,例如下面這個例子,只有從ori gin.asp進入這個例子程序才被允許:
<HTML>
<HEAD><TITLE>服務端變量</TITLE></HEAD>
<BODY>
<%
WhereForm=request.ServerVariables(「HTTP_REFERER」)
IF WhereForm=「http://www.mysitename.com/example/origin.asp」 THEN
%>
歡迎進入邁至科ASP教程示例
<%
ELSE
%>
您未被授權訪問該頁!
<%
END IF
%>
</BODY>
</HTML>
在這個例子中,HTTP_REFERER header檢查用戶連接的來源,只有是從http://www.mysitename.com/example/origin.asp連接過來的才被允許訪問,這樣進行授權控制就非常容易。
警告
使用這些header有時也會有麻煩,因為並不是所有的瀏覽器都有這些header,例如,早期版本的一些瀏覽器不支持HTTP _REFERER header。
利用Headers來控制一個主頁是否進入緩存區
代理服務器被用來減少在互聯網中接受主頁的時間。代理服務器將主頁複製在自己緩存中,這樣別人就只需要從它的緩存中取出來而不用 到原始的服務器上,但是對於Active Server Pages來說(同樣適用於Cold Fusion),代理服務器是個很討厭的東西,因為它的內容是動態更新的,每次訪問都可能由於你所限定的條件而顯示不同內容,而 保存在cache中的顯然無法做到這點,因此,你肯定不希望別人從代理服務器的Cache中調用。
默認情況下,代理服務器不會將Active Server Page放入緩存,不過你可以用ASP的CACHE_CONTROL Header來控制其是否被代理服務器存入緩存。在你的Active Server Page的首行添加下面這句將允許代理服務器將該ASP存入緩存。
<% Response.CacheControl=「Public」 %>
你一樣可以限定你的瀏覽器的緩存怎樣進行緩存操作,瀏覽器通常有內存cache和硬盤cache,使用Response對象的E xpires屬性,你可以限定瀏覽器對其緩存的時間範圍,如果設置為0,那麼瀏覽器就不會將Active Server Pages存入Cache,如下:
<% Response.Expires=0 %>
你還可以限定Cache存在截止的具體的日期時間。如果這樣,瀏覽器將持續使用這個Cache副本直到截止時間,下例截止時間為 1998年8月1日:
<% Response.ExpiresAbsolute=#Oct 1, 1998 00:00:00#>
注意
根據HTTP1.1協議,你不能將截止時間設定的超過一年,相信內容見http://w3.org
你也可以利用Internet Service Manager來限定主頁的過期時間,選擇HTTP Headers頁然後找相關項進行填寫修改。
利用Headers來限定內容等級
Platform for Internet Content Selection(PICS)提供了為一個主頁或者整個站點做標記的方式。例如,你可以用PICS標記來指示出站點內容的暴力 或者色情等級。
PICS自己不是一個等級服務,PICS標準可以適應於網絡上任何不同的文化,這意味著你可以根據自己的標準指定等級而使得互聯 網上PCIS的標準千奇百怪。例如一個文靜的教師自己制定的標準和一些近似瘋狂組織的成員制定的標準肯定有很大區別。
決定使用哪種等級服務是用戶個人自己的事情。理論上,個人可以根據自己的愛好選擇等級服務。通常,這種等級服務支持面很廣,IE 3.0以及以上版本都可以支持PCIS標準。不過,默認的唯一的等級服務是Recreational Software Advisory Council(RSAC)。同樣的組織為電腦遊戲進行了等級劃分。RSAC等級系統有四個種類,分別是暴力、裸體、性、以及語 言,對於每一個種類,你可以在等級1到5之間選擇。
用戶可以設置IE來阻住不符合用戶愛好的站點。例如,用戶可以阻住充滿暴力和色情的站點而去看其他健康的站點。瀏覽器還可以阻住 那些沒有設定等級的站點,(不過,這樣的話,網絡上的絕大部分站點就都被阻住了)
接受一個RSAC等級評定,在RSAC站點註冊就可以了,(目前是免費的)。網址是:http://www.rasc.org。填寫一些表格,就可以了,如圖14.4。
圖14.4 RSAC站點的提問信息
例如,你的站點沒有暴力(v)、裸體(n)、性(s)和不健康語言(l)的話,那麼,你的站點就會受到這樣的PICS 標誌:
(PICS-1.1 「Http://www.rsac.org/rathingsv01.cfml」 l gen true
comment 「RSACi North America Server」
by 「walther@aspsite.com」
for 「http://www.aspsite.com」
on 「1998.06.10T02.04-0800」 r (n 0 s 0 v 0 l 0))
在你獲得了這樣的標誌後,你就可以在主頁首利用這種標誌,這時可以使用PICS屬性來在當前的Header中添加這樣的標誌,見 下面的例子:
<% Response.PICS(「(PICS-1.1」&chr(34)
&「Http://www.rsac.org/rathingsv01.cfml」 &chr(34)
&「l gen true comment」&chr(34)
&「RSACi North America Server」&chr(34)
&」by」&chr(34)& 「walther@aspsite.com」
&chr(34)&」for」& 「http://www.aspsite.com」
&chr(34)&」on」&chr(34)
& 「1998.06.10T02.04-0800」
&chr(34)&r (n 0 s 0 v 0 l 0))」)
%>
這樣就將標誌加在了主頁的Header,但是這種方法太麻煩了,因為每一個雙引號都要用&chr(34)&來處 理,實在麻煩,下面是作為主頁操作的更為簡單的方法:
<META http-equiv=「PICS-Lable」
content=『(PICS-1.1 「Http://www.rsac.org/rathingsv01.cfml」 l gen true
comment 「RSACi North America Server」
by 「walther@aspsite.com」
for 「http://www.aspsite.com」
on 「1998.06.10T02.04-0800」 r (n 0 s 0 v 0 l 0))』>
注意
你當然也可以利用Internet Service Manager來限定內容等級,在HTTP Headers頁,選擇Edit Ratings。
|