referrer
,以及如何經過
Referrer Policy
去修改
referrer
的值或者是顯示與否。
當一個用戶點擊當前頁面中的一個連接,而後跳轉到目標頁面時,目標頁面會收到一個信息,即用戶是從哪一個源連接跳轉過來的。以下圖所示:瀏覽器
referrer
字段就說明了你是從哪一個頁面發起該請求的。
referrer
字段的值,便是否讓其顯示在請求頭中,或者是否顯示完整路徑等。尤爲是在如下兩個使用場景:
referrer
字段中傳過去,尤爲是我的中心頁面的URL每每會帶着用戶數據和一些敏感信息。這時候能夠選擇不顯示來源頁面URL信息或者只顯示一個網站根地址hostname。
固然還有其餘狀況下須要referrer
的值,好比最近公司所作的項目中,有一個請求因爲請求頭過大致使響應是400,咱們的Referrer Policy
是默認的狀況,顯示的referrer
是完整的URL信息,該URL帶了不少敏感數據好比加密後的token,sessionID等,長度特別長,請求頭中的cookie和請求的URL也帶着很大塊的信息,最終咱們決定讓referrer
只攜帶網站根地址的信息而不是其完整路徑,由此減少了header的大小。
安全
Referrer-Policy
的做用就是爲了控制請求頭中
referrer
的內容,目前是一個候選標準,不過已經有部分瀏覽器支持該標準。
Referrer-Policy
只包含如下幾種值:
enum ReferrerPolicy {
"",
"no-referrer",
"no-referrer-when-downgrade",
"same-origin",
"origin",
"strict-origin",
"origin-when-cross-origin",
"strict-origin-when-cross-origin",
"unsafe-url"
};複製代碼
referrer
的內容,默認狀況下是和
no-referrer-when-downgrade
設置得同樣。
referrer
的任何信息在請求頭中。
referrer
的信息,其餘狀況(安全同級HTTPS→HTTPS,或者HTTP→HTTP)則在
referrer
中顯示完整的源網站的URL信息。
referrer
信息給同源網站,而且是完整的URL信息。所謂同源網站,是協議、域名、端口都相同的網站。
referrer
字段中只顯示源網站的源地址(即協議、域名、端口),而不包括完整的路徑。
origin
策略類似,只是不容許
referrer
信息顯示在從https網站到http網站的請求中(安全降級)。
referrer
中顯示完整的URL信息,發個非同源網站時,則只顯示源地址(協議、域名、端口)
origin-when-cross-origin
類似,只是不容許
referrer
信息顯示在從https網站到http網站的請求中(安全降級)。
referrer
字段中,不管請求發給任何網站。
1. 經過Referrer-Policy
HTTP header
設置:
bash
Referrer-Policy: origin複製代碼
2. 經過<meta>
元素改變Referrer Policy
,直接修更名爲referrer
的內容cookie
<meta name="referrer" content="origin">複製代碼
3. 給 <a>
, <area>
, <img>
, <iframe>
, 或者<link>
元素設置referrerpolicy
屬性session
<a href="http://example.com" referrerpolicy="origin">複製代碼
4. 如需設置不顯示referrer
信息時,也能夠給 <a>
, <area>
, <link>
元素設置rel
的連接關係。網站
<a href="http://example.com" rel="noreferrer">複製代碼
Referrer Policy
取決於網站的需求,可是通常來講,
unsafe-url
是不太建議用的,一樣,若是是隻想顯示網站的根地址,那麼建議用
strict-origin
和s
trict-origin-when-cross-origin
。若是URL中沒有什麼敏感信息,那就默認使用
no-referrer-when-downgrade
。