什麼是Referer?html
Referer是HTTP請求頭信息裏面的一個常見字段,它提供了訪問來源的信息。好比說,在某網站上看到一個廣告並點了進去,那麼我就可能會在HTTP 協議在請求(request)的頭信息裏面看到Referer這一字段給出「引薦網頁」的URL,讓人知道咱們是經過「某網站」進入的這個廣告頁。瀏覽器
Referer存在的條件服務器
在瀏覽器向服務器請求資源的時候,Referer字段並非老是存在的,其中在如下幾種狀況中會發送Referer字段。post
1.點擊網頁上的鏈接網站
2.提交表單(post或get)url
3.網頁加載靜態資源,好比加載圖片、腳本、樣式(js的script標籤及html中img標籤的src屬性)。spa
如下是幾種獲取不到Referer的幾種狀況.net
1.直接在瀏覽器內輸入URLhtm
2.經過瀏覽器內的書籤或收藏blog
3.第三方軟件內容中的鏈接(如Word,Excel等)
4.從HTTPS的網站跳轉到HTTP的網站或SSL認證網站跳入
那麼Referer有什麼做用呢?
1.經過Referer咱們能夠知道訪問來源的信息,因此能夠用來作一些網站流量的來路統計
2.防止圖片盜鏈,當咱們不但願自家網站圖片外鏈被其餘網站加載時,就能夠基於Referer字段來實現,能夠經過判斷該字段是不是自家URL或者是屬於白名單裏的URL若是是則放行容許加載。
3.在某些情境下咱們不但願暴露當前的原始網址,好比一個社交網站會有每一個用戶的簡介頁面,用戶會在他們的我的主頁中添加一些連接。社交網站可能不但願泄露用戶的我的主頁URL給被連接的網站(由於我的主頁URL可能會泄露其主人的身份信息)。
一些社交網站可能想通知其餘網站該連接是從社交網站發起的,但不想泄露包含用戶信息的連接(例如,微博中的連接但願告訴對方該連接是在微博中鏈接過來的,但不但願告訴對方從誰的微博鏈接過來)。
referrer策略
Referrer策略包含如下值:
Referrer策略能夠經過如下方法聲明:
1.經過http請求頭中的Referrer-Policy字段,例:Referrer-Policy: no-referrer
2.經過meta標籤,name爲referrer,例:<meta name=」referrer」 content=」no-referrer」 />
3.經過<a>、<area>、<img>、<iframe>、<link>元素的referrerpolicy屬性。例:<a href=「http://example.com」 referrerpolicy=「origin」>
4.經過<a>、<area><link>元素的rel=noreferrer屬性,例:<a href='http://example.com' rel="noreferrer" target="_blank">test</a>
5.經過隱式繼承
注意事項
Referrer策略還有其餘歷史遺留的值:
1.never等價於no-referrer
2.default等價於no-referrer-when-downgrade
3.always等價於unsafe-url
4.不建議使用上面三個值,建議使用後面的新值
兼容性
IE:不支持(IE高版本中隱式支持default,https頁面拉取的http資源不會加referrer)
Edge:僅支持較早版本的值(never、always、origin、default)
Firefox:36+
Chrome:21+
Safari:7.1+(僅支持較早版本的4個值)
Opera:15+
iOS Safari:8+(僅支持較早版本的4個值)
參考:
http://www.ruanyifeng.com/blog/2019/06/http-referer.html
https://blog.lyz810.com/article/2016/08/referrer-policy-and-anti-leech/