referer 參數是 HTTP 請求頭中的關鍵參數,用於表示請求的來源地址。例如,在頁面引入圖片、JS 等資源或跳轉網址時,一般都會帶上 referer 參數。然而,referer 參數也非常容易辨識及偽造,因此成為了網路爬蟲與防禦方的拉扯戰爭。
歷史淵源
HTTP referer 是 HTTP 表頭的一個欄位,用於表示請求的來源地址採用的格式是 URL。
目前的網頁可以藉由 HTTP referer 檢查訪客從哪裡而來,這也常被用來對付偽造的跨網站請求。
拼寫問題
Referer 的正確英語拼法是 referrer。這是早期 HTTP 規範中的拼寫錯誤,後來為了向下相容而將錯就錯。例如 DOM Level 2[1]、Referrer Policy[2] 等其他網路技術的規範曾試圖修正此問題,使用正確拼法,導致目前拼法並不統一。
功能與概念
當訪客訪問網頁時,HTTP referer 參數用於表示請求的來源地址。如果是圖片的話,通常指的就是圖片所在的網頁。
網站可以藉由 HTTP referer 參數來追蹤使用者的動態或進行統計,但這也可能會帶來隱私權問題。因此,不少網頁瀏覽器允許使用者設定不要送出 HTTP referer 參數,有些代理伺服器和防火牆也會將 HTTP referer 參數過濾掉。
缺少 HTTP referer 參數可能會造成某些使用問題,例如某些伺服器會因為缺少正確的 HTTP referer 參數而進行阻擋。
Referer Header 隱私
Referrer-Policy 是一種 HTTP 標頭,用於控制 HTTP referer 參數的傳送方式,提供網頁本身可以根據不同的需求調整送出的標頭內容,來協助訪可在隱私上得到更好的控制權。
注意的特例
在以下兩種情況下,HTTP referer 參數不會被傳送:
- 來源頁面採用的協定為表示本機檔案的 “file” 或 “data” URI;
- 目前請求頁面採用的是非安全協議,而來源頁面採用的是安全協議(HTTPS)。