若是你也曾複製過一些相似騰訊、百度等各大網站的文章,你會發現複製下來發表以後常常出現圖片沒法顯示,這是什麼緣由呢?javascript
<body> <img src="http://upload.techweb.com.cn/2017/0106/1483690985396.jpg" /> </body>
使用Referer Meta標籤控制referer,在H5 的 header加入metahtml
<meta name="referrer" content="never">
便可修復!html5
HTTP Referer是header的一部分,當瀏覽器向web服務器發送請求的時候,通常會帶上Referer,告訴服務器我是從哪一個頁面連接過來的,服務器基此能夠得到一些信息用於處理。
java
簡介web
簡而言之,HTTP Referer是header的一部分,當瀏覽器向web服務器發送請求的時候,通常會帶上Referer,告訴服務器我是從哪一個頁面連接過來的,一般被網站用來統計用戶來源,是從搜索頁面來的,仍是從其餘網站連接過來,或是從書籤等訪問,以便網站合理定位,服務器藉此能夠得到一些信息用於處理。好比從我主頁上連接到一個朋友那裏,他的服務器就可以從HTTP Referer中統計出天天有多少用戶點擊我主頁上的連接訪問他的網站。
Referer有時也被用做防盜鏈, 即下載時判斷來源地址是否是在網站域名以內, 不然就不能下載或顯示,不少網站,如天涯就是經過Referer頁面來判斷用戶是否可以下載圖片。
固然,對於某些惡意用戶,也可能僞造Referer來得到某些權限,在設計網站時要考慮到這個問題。
Referer 還可用作電子商務網站的安全,在提交信用卡等重要信息的頁面用referer來判斷上一頁是否是本身的網站,若是不是,多是黑客用本身寫的一個表單,來提交,爲了能跳過你上一頁裏的javascript的驗證等目的。
可是,注意不要把Rerferer用在身份驗證或者其餘很是重要的檢查上,由於Rerferer很是容易在客戶端被改變。
瀏覽器
1、去除http頭部的Referer信息,防止重要網址被瀏覽器「偷偷的泄漏」安全
有時候咱們須要在點擊連接時候去除http頭部的referer屬性,好比在網站後臺有連接到外部網站的地方,若不去除的話很容易暴漏咱們的後臺地址!服務器
referer是由客戶端的瀏覽器發送到服務器上的,且在客戶端能夠經過document.refererrer 來獲取,也就是說referer的發送其實是一個瀏覽器行爲,發送與否的決定權實在瀏覽器手裏。
網站
下面幾種狀況下,能夠控制瀏覽器是否發送referer:url
- 當網站使用refresh字段進行跳轉的時候,大多數瀏覽器不發送referer;
- 從用戶從一個HTTPS的網站點擊連接到另外一個HTTP的網站時,不發送referer;
- html5中,a標籤的rel = 「noreferrer」, 可讓瀏覽器不發送referer;
- 使用Data URI scheme連接的,瀏覽器也不發送referer;
- 使用Content Security Policy, 也可讓瀏覽器不發送referer;
- 在html頭部中使用meta標籤來控制不讓瀏覽器發送referer;
- 用戶手輸入網址或是從收藏夾、書籤中訪問。
referer 的 metedata 參數能夠設置爲如下幾種類型的值:
- never
- always
- origin
- default
瀏覽器後續發起 http 請求的時候,會按照 content 的值,作出以下反應(下面 referer-policy 的值即 meta 標籤中 content 的值):
1.若是 referer-policy 的值爲never:刪除 http head 中的 referer;
2.若是 referer-policy 的值爲default:若是當前頁面使用的是 https 協議,而正要加載的資源使用的是普通的 http 協議,則將 http header 中的 referer 置爲空;
3.若是 referer-policy 的值爲 origin:只發送 origin 部分;
4.若是 referer-policy 的值爲 always:不改變http header 中的 referer 的值,注意:這種狀況下,若是當前頁面使用了 https 協議,而要加載的資源使用的是 http 協議,加載資源的請求頭中也會攜帶 referer。
例子
一、若是頁面中包含了以下 meta 標籤,全部從當前頁面中發起的請求將不會攜帶 referer:
<meta name="referrer" content="never">
二、若是頁面中包含了以下 meta 標籤,則從當前頁面中發起的 http請求將只攜帶 origin 部分(注:根據原文中的語境,我理解這裏的 origin 是包含了 schema 和 hostname 的部分 url,不包含 path 等後面的其餘 url 部分),而不是完整的 URL :
<meta name="referrer" content="origin">
注意:在使用本文中所述的 meta 標籤的時候,瀏覽器原有的 referer 策略將被打破,好比從 http 協議的頁面跳轉到 https 的頁面的時候,若是設置了適當的值,也會攜帶 referer。