HTTP Referer簡介

在百度中搜索搜狐,點擊鏈接進去,抓包信息如下:

GET http://www.sohu.com/ HTTP/1.1
Host: www.sohu.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.4 (KHTML, like Gecko) Chrome/16.0.889.0 Safari/535.4
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Referer: http://www.baidu.com/s?tn=baidusite&word=%CB%D1%BA%FC
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Cookie: www1=w:1; vjuids=26e753894.132e8ab7273.0.c409be1c; sci12=w:1; ent12=w:1; gn12=w:1; IPLOC=CN1200; SUV=1110092031152327; SOHUHOMETAB=visit:2; TurnAD9=visit:3; TurnADzs19=visit:1; TurnADzs20=visit:2; TurnAD351=visit:2; TurnAD119=visit:1; TurnAD118=visit:2; TurnAD10=visit:2; TurnAD120=visit:3; TurnAD11=visit:2; TurnAD414=visit:1; TurnAD415=visit:1; TurnAD349=visit:3; TurnADfankaniu=visit:2; TurnADab10e888e532c9887794784e83c9504c=visit:1; www0=w:1; FULL=w:1; COUPLET=w:1; tiyu11=w:1; tiyu12=w:1; vjlast=1318163543.1318741656.11
If-Modified-Since: Sun, 16 Oct 2011 05:01:04 GMT

 其中紅色部分就是訪問www.sohu.com時,HTTP請求中的Referer,表示通過百度搜索關鍵字’搜狐’,點擊鏈接跳轉而來。

HTTP Referer是header的一部分,當瀏覽器向web服務器發送請求的時候,一般會帶上Referer,告訴服務器我是從哪個頁面鏈接過來的,服務器籍此可以獲得一些信息用於處理。比如從我主頁上鍊接到一個朋友那裏,他的服務器就能夠從HTTP Referer中統計出每天有多少用戶點擊我主頁上的鏈接訪問他的網站。

Referer其實應該是英文單詞Referrer,不過拼錯的人太多了,所以編寫標準的人也就將錯就錯了。

關於HTTP Referer使用非常簡單,使用場合比較多的是用於頁面統計、資源防盜鏈等,但還是有一點值得注意的是:Referer是不安全的,客戶端可以通過設置改變 Request中的值,儘量不要用來進行安全驗證等方面。

Referer是不安全的,客戶端可以通過設置改變 Request中的值,儘量不要用來進行安全驗證等方面;下面介紹下默認情況下Referer可能出現爲空的場景:

1、頁面從https跳轉到http,應該是處於安全考慮,該點在RFC-2616中有說明,主流瀏覽器均遵守這個規則,比如IE、FF;但默認情況下https到https是會發送Referer的。

2、直接在瀏覽器中輸入目標URL。

3、由於FF提供了很強大的自定義參數設置功能,所以我們可以通過about:config頁面修改以下兩個選項的默認設置:network.http.sendRefererHeader (default=2),設置Referer的發送方式,0爲完全不發送,1爲只在點擊鏈接時發送,在訪問頁面中的圖像什麼的時候不發送,2爲始終發送。network.http.sendSecureXSiteReferrer (default=true),設置從一個Https訪問到另外Https頁面的時候是否發送Referer,true爲發送,false爲不發送。

4、從收藏夾訪問。

5、單擊’主頁’或者自定義的地址

6、用js來window.open等方式打開(還有location.href,location.replace())。

在PHP中可以通過預定義變量$_SERVER獲取HTTP的Referer,即:$_SERVER['HTTP_REFERER']。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章