Skip to content

[HTML] Referrer-Policy 是什麼?

Published: at 09:01 AM (4 min read)

Referer 是什麼?

在 HTTP header 中有個 Referer 的欄位,這個欄位會記錄你是從哪個網址連到這個頁面的。

例如當使用者從 Google 搜尋連到你的網站時,你可以在 network 看到 request http header

referer: https://www.google.com/

referer

同時,在頁面上也可以透過 JavaScript 取得 referer

console.log(document.referrer); // https://www.google.com/

Referer 實際用途

既然 Referer 可以知道使用者是從哪個網址連過來的,那麼我們也能進一步歸類網站的流量來源

例如在 Google Analytics 中,我們可以透過 referer 來分析流量來源 google-analytics-referer

甚至歸類 organic(搜尋引擎)referral(其他網站)direct(直接輸入網址) 等不同的來源群組

Referrer-Policy 是什麼?

前面我們提到了 Referer 這個欄位,但是你可能並不希望你的網站或網址等資訊被外部網站知道,例如當你的網址有敏感資訊在網址時,這時候就可能衍生資安問題(如下圖)

sensitive-url

這時候可以透過 Referrer Policy http response header 控制要如何處理 Referer

你可能會有疑問為什麼是 Referrer-Policy 而不是 Referer-Policy,這是因為 Referer 其實是在 RFC 1945 中的拼錯字,但是因為歷史原因所以一直沿用至今,但 Referrer-Policy 則是採用正確的拼法 (ref.)

Referrer Policy 有以下幾種設定

referrer-policy

如何設定 Referrer-Policy

  1. 在 server 設定 response http header
Referrer-Policy: no-referrer
  1. 在 HTML 中透過 meta tag 設定
<meta name="referrer" content="no-referrer" />
  1. 在 HTML 中透過 a attribute 設定
<a href="https://www.google.com" referrerpolicy="unsafe-url">Google</a>

<!-- 如果是 no-referrer 也可以這樣寫 -->
<a href="https://www.google.com" rel="noreferrer">Google</a>

妥善設定 Referrer-Policy 對於保護使用者隱私、避免敏感資訊外洩及網站流量來源分析都息息相關,建議在開發網站時一定要注意這個設定,尤其注意不要誤設定為 unsafe-url 🫣

參考資料


Previous Post
[JavaScript] 了解 Promise 的你知道這段程式碼的答案嗎?
Next Post
[sidekiq] How to list Sidekiq jobs in the Rails console