Referer
使い方
Referer ヘッダーは、要求されたリソースへリンクしているページやリソースの URL を示すために、クライアント(ブラウザや HTTP ライブラリ)から送信されます。ユーザーが https://example.re/page 上のリンクをクリックすると、ブラウザは続くリクエストの Referer ヘッダーにリンク元ページのアドレスを入れて送ります。
注意
ヘッダー名の「Referer」は、英単語「referrer」の歴史的なスペルミスです。当初の HTTP 仕様がこの誤字を持ち込み、今さらスペルを修正すると既存の実装が壊れてしまいます。誤記のままの形式が公式なヘッダー名として残っています。
このヘッダーは複数の目的を果たします。アクセス解析システムはトラフィックの流入元を追跡するためにリファラーを利用します。サーバーはこの値をログ記録やアクセス制御に使います。検索エンジンは歴史的に、ページ間のリンク関係を理解するためにリファラーのデータを使ってきました。
Referrer-Policy レスポンスヘッダーは、Referer ヘッダーに含める情報量を制御します。ポリシーは、完全な URL を送るもの(unsafe-url)から、オリジンだけを送るもの(origin)、ヘッダー自体を省略するもの(no-referrer)まで幅があります。ほとんどのブラウザは既定で strict-origin-when-cross-origin を採用し、同一オリジンのリクエストには完全な URL を、クロスオリジンのリクエストにはオリジンのみを送ります。
既定のポリシーでは、HTTPS のページから HTTP のページへのリクエスト(ダウングレード)では Referer ヘッダーは送信されません。フラグメント識別子と認証情報は、値に一切含まれません。
Absolute URL
スキーム、ホスト、パス、クエリ文字列を含む完全な URL です。同一オリジンのリクエストでは通常、完全な URL が含まれます。
Referer: https://example.re/articles/http-headers?page=2
Origin only
パスやクエリ文字列を伴わない、スキームとホストだけの形です。既定のブラウザポリシーのもとで、クロスオリジンのリクエストに送られます。
Referer: https://example.re/
Empty or absent
Referrer-Policy が no-referrer に設定されている場合、リクエストがブックマークされた URL から発生した場合、アドレスバーに URL を直接入力した場合、既定ポリシーのもとで HTTPS から HTTP へダウングレードする場合には、このヘッダーは完全に省略されます。
例
検索結果ページのリンクをたどったブラウザは、検索 URL をリファラーとして送ります。リクエストを受け取ったサーバーは、訪問者がどこから来たのかを把握できます。
Referer: https://search.example.re/results?q=http+headers
セキュアなページからのクロスオリジンのリクエストでは、既定の strict-origin-when-cross-origin ポリシーによりオリジン部分だけが送られます。
Referer: https://example.re/
同一オリジンで読み込まれたリソースでは、リファラーの値に完全なパスとクエリ文字列が含まれます。
Referer: https://example.re/docs/guide?section=headers