The Issue of the Day Before

不要傳遞 referer

browser -

script 標籤上加入 referrerpolicy="no-referrer" 可以在送出請求時,告訴瀏覽器不要在 Request Headers (標頭)附加上 referer: 屬性。

<script referrerpolicy="no-referrer"></script>

Why

  • 可以減少流量

  • 減少資訊曝露

What

referer

referer policy

How

<script referrerpolicy="no-referrer"></script>

其他可用的指示字

no-referrer

標頭 referer 會被省略,不送出任何 referrer 資訊。

no-referrer-when-downgrade

只有當 protocol 安全級別下調時省略標頭 referer。即,若網頁本身是 https 但要發送的是 http 時。 反之,網頁本身是 http 但要發送的是 https 時,則要依規定來決定是否發送。

origin

只發送 origin 的部分。 origin 是由 scheme (protocol), hostname (domain), 和 port 三部分組成。 即,若網頁本身是 https://example.com/page.html 則發送的 referrerhttps://example.com/

origin-when-cross-origin

如果 protocol 安全級別不一樣則只送出 origin

same-origin

只有同源時才發送 referrer。即,只有在網頁本身跟要發送的請求都有相同 origin(protocol + domain + port) 時才發送。

strict-origin

只有當 protocol 相同時發送 referer: origin,其他情況則不發送任何 referrer 資訊。

strict-origin-when-cross-origin

只有同源才發送 referrer,而在跨域請求且 protocol 安全級別一樣時,只送出 origin,其他情況不發送任何 referrer 資訊。

unsafe-url

任何情況都發送 referrer 資訊。

其他使用方式

直接指定整個網頁的發送標頭 referer 的方式。

<meta name="referrer" content="origin">

在標籤 - <a> - <area> - <img> - <iframe> - <script> - <link> 可加上

<a href="http://example.com" referrerpolicy="origin">

在標籤 - <a> - <area> - <link> 可加上

<a href="http://example.com" rel="noreferrer">
閱讀在雲端