在百度百科中,對于該參數(shù)的描述如下:
“HTTP
Referer是header的一部分,當(dāng)瀏覽器向web服務(wù)器發(fā)送請求的時候,一般會帶上Referer,告訴服務(wù)器我是從哪個頁面鏈接過來的,服務(wù)器籍此可以獲得一些信息用于處理?!?/p>
從上面的論述中我們可以得到如下幾點結(jié)論:
http_referer由瀏覽器生成,并不是所有瀏覽器都會設(shè)置該值。
http_referer可以偽造,并不可信。
HTTP_REFERER的用途
HTTP_REFERER提供了引導(dǎo)用戶代理到當(dāng)前頁的前一頁的地址信息,常見的一些應(yīng)用場景有防盜鏈,統(tǒng)計文章有多少次是來自谷歌搜索結(jié)果,多少次來自百度搜索結(jié)果等。
下面以防盜鏈為例,講講HTTP_REFERER的用法。
如果你經(jīng)常寫博客,就一定會遇到盜用你辛辛苦苦整理過的文章不跟你打任何招呼甚至連原文鏈接都一并抹除的網(wǎng)站,文字這個層面我們沒法控制,但是圖片這個層面我們是可以控制的。舉個例子,如果你也曾復(fù)制過一些類似騰訊等網(wǎng)站的文章,你會發(fā)現(xiàn)黏貼下來發(fā)表之后經(jīng)常出現(xiàn)圖片無法顯示,這是如何做到的呢?
場景:a站點的圖片全部存儲在c站點(云服務(wù)器)上,c站點將識別調(diào)用方是否來自a站點,否則顯示一張錯誤圖片,b站是盜圖網(wǎng)站。
a站和b站的代碼一致,如下所示:
<img src="http://www.c.com/image.php?fname=jb.png" width="500px" height="500px" />;
重點是c站的代碼,如下所示:
<?php
if(strpos($_SERVER['HTTP_REFERER'], 'www.a.com') !== false){
//以下的寫法并不嚴(yán)謹(jǐn),這里只是做測試
if(file_exists($_GET['fname'])){
echo file_get_contents($_GET['fname']);
}
}
這樣當(dāng)a站訪問時圖片可以正常顯示,而b站訪問時圖片是顯示不出來的。
https://blog.csdn.net/fjb2080/article/details/80975115