程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> 關於ASP編程 >> Http_Referer,Server_Name和Http_Host

Http_Referer,Server_Name和Http_Host

編輯:關於ASP編程

剛才運行了一段代碼,來查看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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved