HTTP_REFERER

HTTP_REFERER

HTTP Referer是header的一部分,當瀏覽器向web伺服器傳送請求的時候,一般會帶上Referer,告訴伺服器我是從哪個頁面連結過來的,伺服器基此可以獲得一些信息用於處理。

基本介紹

  • 外文名:HTTP_REFERER
  • 類型:header的一部分
  • 功能:計算網頁上的連結訪問量
  • 範圍:計算機
  • 隸屬:網路程式語言
簡介,防外鏈代碼例子(C#),

簡介

簡而言之,HTTP Referer是header的一部分,當瀏覽器向web伺服器傳送請求的時候,一般會帶上Referer,告訴伺服器我是從哪個頁面連結過來的,伺服器藉此可以獲得一些信息用於處理。比如從我主頁上連結到一個朋友那裡,他的伺服器就能夠從HTTP Referer中統計出每天有多少用戶點擊我主頁上的連結訪問他的網站。
Referer的正確英語拼法是referrer。由於早期HTTP規範的拼寫錯誤,為了保持向後兼容就將錯就錯了。其它網路技術的規範企圖修正此問題,使用正確拼法,所以目前拼法不統一。
Request.ServerVariables("HTTP_REFERER")的用法(防外連線)

防外鏈代碼例子(C#)

if (Request.ServerVariables["HTTP_REFERER"] == null || !Request.ServerVariables["HTTP_REFERER"].ToString().Contains(Request.ServerVariables["HTTP_HOST"].ToString())){Server.Transfer("Error.aspx");}
下列情況是從瀏覽器的地址欄正常取得Request.ServerVariables("HTTP_REFERER"):
  • 直接用<a href="">
  • 用Submit或<input type="image">提交的表單(POST或GET)
  • 使用JavaScript提交的表單(POST或GET)
下面我們再看看Request.ServerVariables("HTTP_REFERER")不能正常取值的情況:
  • 從收藏夾連結
  • 單擊主頁或自定義的地址
  • 在瀏覽器中直接輸地址
  • 使用JavaScript的Location.href或者是Location.replace()
  • <%Response.Redirect%>
  • <%Response.AddHeader%>或者是<mete http-equiv="refresh">轉向
  • 用XML載入地址
顯然,Request.ServerVariables("HTTP_REFERER")在多數情況下是不能正常工作的,下面我們看一個例子:
ref.asp
<%response.write "You came from: " & request.servervariables("http_referer")%>
ref.htm
<%Response.AddHeader "Refresh", "10;URL=ref.asp"%><meta http-equiv='refresh' content='10;URL=ref.asp'><form method=GET action=ref.asp name=getform><input type=submit value=' Go there (GET) >> '><input type=image style='cursor:hand'></form><p>
看看上面的代碼會得到什麼的結果.
<form method=POST action=ref.asp name=postform><input type=submit value=' Go there (POST) >> '><input type=image style='cursor:hand'></form><p><a href='ref.asp'>直接連結</a><p><a href='#' onclick='window.location.href="ref.asp";return false;'>Javascript location</a><p><a href='#'onclick='window.location.replace("ref.asp");return false;'>Javascript replace</a><p><a href='#' onclick='document.getform.submit();return false;'>javascript GET</a><p><a href='#' onclick='document.postform.submit();return false;'>javascript POST</a>

相關詞條

熱門詞條

聯絡我們