HTTP參照位址

本页使用了标题或全文手工转换,现处于香港繁体模式
求聞百科,共筆求聞
「HTTP參照位址」的各地常用別名
中國內地HTTP來源地址
港台HTTP參照位址

HTTP參照位址referer,或HTTP referer)是HTTP表頭的一個欄位,用來表示從哪兒連結到目前的網頁,採用的格式是URL。換句話說,藉着HTTP參照位址,目前的網頁可以檢查訪客從哪裏而來,這也常被用來對付偽造的跨網站請求。

dereferer則是將HTTP參照位址資訊剝離,所以網站將無法識別訪客從何而來。

拼寫問題

Referer的正確英語拼法是referrer。這是早期HTTP規範當中存在的拼寫錯誤,後來為保持向下相容將錯就錯。例如DOM Level 2[1]、Referrer Policy[2]等其他網絡技術的規範曾試圖修正此問題,使用正確拼法,導致目前拼法並不統一。

概念與功能

當訪客存取網頁時,HTTP參照位址(refererreferring page)是前一個網頁URL。如果是圖片的話,通常指的就是圖片所在的網頁。在網頁瀏覽器送往網頁伺服器的時候,HTTP參照位址就被包含在HTTP請求方法中。

網站會將參照地址記錄以便追蹤用戶的動態或進行統計,大部分分析軟件也都會處理這個資訊。但因參照地址資訊可能會帶來私隱權問題,不少網頁瀏覽器允許用戶設置不要送出這個資訊,有些代理伺服器防火牆也會將參照地址資訊過濾掉,以避免外部獲知非公開的網絡地址。缺少參照地址資訊有可能會造成某些使用問題:某些伺服器會因為缺少正確的參照地址資訊而進行阻擋,以避免未經授權的圖片參照(圖像防盜鏈)或是其他對伺服器有影響的行為。針對這樣的阻擋,有些軟件還提供了針對特定網站送出假來源地址的功能(反防盜鏈)。

如何取得HTTP參照位址

ASP.NET(C#
string strReferrer = Request.UrlReferrer.AbsolutePath.ToString();
string strReferrer = Request.ServerVariables("http_referrer");
string strReferrer = Request.UrlReferrer.ToString();
ASP
strReferrer = Request.ServerVariables("HTTP_REFERER").Item;
PHP
$strReferrer = $_SERVER["HTTP_REFERER"];
JAVA
strReferrer = request.getHeader("referer");
GO
strReferrer = http.Request.Referer()
Python
from flask import Flask,request
app = Flask(__name__)
@app.route("/")
def Get_Referer():
    Referer = request.headers.get("Referer")
    return Referer

參考與外部連結

  • RFC 2616: Hypertext Transfer Protocol – HTTP/1.1
  • IRI – Internationalized Resource Identifiers

參考資料

  1. Document Object Model (DOM) Level 2 CoreSpecification. W3C. [2017-07-05] (英語). 
  2. Referrer Policy. W3C. [2017-07-05] (英語).