剛才運行了一段代碼,來查看Request.ServerVariables裡面有多少值,看了一下,共50個!
代碼<%=Request.ServerVariables.count%>
以前感覺Request.ServerVariables裡的值很多,現在看看還是那麼多,不過今天談其中的一個值----HTTP_Referer
首先,我們先知道HTTP_Referer最常用的應用就是能夠防止外部提交。
下列情況是從浏覽器的地址欄正常取得Request.ServerVariables("HTTP_REFERER"):
1) 直接用<a href="">
2) 用Submit或<input type="image">提交的表單(POST或GET)
3) 使用JAvaScript提交的表單(POST或GET)
下面我們再看看Request.ServerVariables("HTTP_REFERER")不能正常取值的情況:
1) 從收藏夾鏈接
2) 單擊主頁或自定義的地址
3) 在浏覽器中直接輸地址
4) 使用JavaScript的Location.href或者是Location.replace()
5) <%Response.Redirect%>
6) <%Response.AddHeader%>或者是<mete http-equiv="refresh">轉向
7) 用XML加載地址
顯然,Request.ServerVariables("HTTP_REFERER")在多數情況下是不能正常工作的。關於它的具體用法我會在以後的文章中詳細的介紹,同時還會介紹Request.ServerVariables("HTTP_HOST")Request.ServerVariables("SERVER_NAME")之間的區別。
敬請關注!
Request.ServerVariables裡Server_Name與Http_Host之間有什麼區別呢?
如果不仔細看,您應該看不出它們之間的區別。在網上搜了很多,還是也沒有看懂,不過最後還是有一句話很是明白:Http_Host可以Request出非80的Server_Port,簡單地說就是,Http_Host=Server_Name:Server_Port。
在以前發表過關於Http_Referer作用的文章,現在結合它來寫一個ASP防止外部提交的函數
function ChkPost()
dim server_v1,server_v2
chkpost=false
server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
If Mid(server_v1,8,Len(server_v2))<>server_v2 then
chkpost=False
else
chkpost=True
end If
end function