前端面試—Http請求頭中Referer的含義和作用
博客說明
文章所涉及的資料來自互聯網整理和個人總結,意在於個人學習和經驗匯總,如有什么地方侵權,請聯系本人刪除,謝謝!
介紹
HTTP Referer是header的一部分,當瀏覽器向web服務器發送請求的時候,一般會帶上Referer,告訴服務器該網頁是從哪個頁面鏈接過來的,服務器因此可以獲得一些信息用於處理。
作用
防盜鏈
假如在www.google.com里有一個www.baidu.com
鏈接,那么點擊進入這個www.baidu.com
,它的header信息里就有:Referer=http://www.google.com
只允許我本身的網站訪問本身的圖片服務器,假如域是www.google.com
,那么圖片服務器每次取到Referer來判斷一下域名是不是www.google.com
,如果是就繼續訪問,不是就攔截。
將這個http請求發給服務器后,如果服務器要求必須是某個地址或者某幾個地址才能訪問,而你發送的referer不符合他的要求,就會攔截或者跳轉到他要求的地址,然后再通過這個地址進行訪問。
防止惡意請求
比如靜態請求是*.html
結尾的,動態請求是*.shtml
,那么由此可以這么用,所有的*.shtml
請求,必須Referer為我自己的網站。
空Referer
定義:Referer頭部的內容為空,或者,一個HTTP請求中根本不包含Referer頭部(一個請求並不是由鏈接觸發產生的)
直接在瀏覽器的地址欄中輸入一個資源的URL地址,那么這種請求是不會包含Referer字段的,因為這是一個“憑空產生”的HTTP請求,並不是從一個地方鏈接過去的。
那么在防盜鏈設置中,允許空Referer和不允許空Referer有什么區別?
允許Referer為空,意味着你允許比如瀏覽器直接訪問。
防御CSRF
比對HTTP 請求的來源地址,如果Referer中的地址是安全可信任的地址,那么就放行
感謝