在開發web程序的時候,有時咱們須要獲得用戶是從什麼頁面連過來的,這就用到了referer。javascript
它是http協議,因此任何能開發web程序的語言均可以實現,好比jsp中是:php
request.getHeader("referer");html
php是$_SERVER['HTTP_REFERER']。其餘的我就不舉例了(實際上是不會其餘的語言)。java
那它能幹什麼用呢?我舉兩個例子:web
1,防止盜連,好比我是個下載軟件的網站,在下載頁面我先用referer來判斷上一頁面是否是本身網站,若是不是,說明有人盜連了你的下載地址。瀏覽器
2,電子商務網站的安全,我在提交信用卡等重要信息的頁面用referer來判斷上一頁是否是本身的網站,若是不是,多是黑客用本身寫的一個表單,來提交,爲了能跳過你上一頁裏的javascript的驗證等目的。安全
使用referer的注意事項:jsp
若是我是直接在瀏覽器裏輸入有referer的頁面,返回是null(jsp),也就是說referer只有從別的頁面點擊鏈接來到這頁的纔會有內容。網站
我作了個實驗,好比個人referer代碼在a.jsp中,它的上一頁面是b.htm,c.htm是一個帶有iframe的頁面,它把a.jsp嵌在iframe裏了。我在瀏覽器裏輸入b.htm的地址,而後點擊鏈接去c.htm,那顯示的結果是b.htm,若是我在瀏覽器裏直接輸入的是c.htm那顯示的是c.htmreferer是瀏覽器在用戶提交請求當前頁面中的一個連接時,將當前頁面的URL放在頭域中提交給服務端的,如當前頁面爲a.html,它裏面有一個b.html的連接,當用戶要訪問b.html時瀏覽器就會把a.html做爲referer發給服務端.spa