Summary

  • 1996年の HTTP/1.0 は Referer によって訪問者の出発ページの URI を行き先へ伝え、被リンクやログの管理に役立てた。同じ RFC はリンク元が私的な情報になりうることにも触れていた。
  • W3C の Referrer Policy は、ページの作者がその住所をどこまで送るか選べるようにした。strict-origin-when-cross-origin では安全な別サイトへはオリジンだけを送り、HTTPS から HTTP へは送らない。

ブラウザーは新しいサイトへ行くとき、「こちらから来ました」と書いた小さな紙を持参する。1996年5月の HTTP/1.0、RFC 1945 はそれを Referer と呼んだ。つづり違いがそのままインターネットの語彙に定着した。受け取るサーバーは、どのページが人を連れてきたかを調べ、ログやキャッシュを整え、壊れたリンクを見つけられる。便利な紹介状だ。ただ、訪問者には前のページの住所を差し出している実感がない。

1996年の文書は、自分でその危うさに気づいていた。リンク元は私的な情報かもしれず、送るかどうかを人が選べるようにすべきだと記す。手で URL を入力した場合に元のページはなく、# より後ろの断片も運ばない。それでも正確な出発地を知る魅力は強い。被リンクを詳しく数えられるのと同じ精度で、誰かの読書の足跡もたどれてしまう。

W3C は後に、この問題を人の顔が見える場面で描いた。SNS のプロフィールにお気に入りのバンドへのリンクを置く。別の人がクリックする。バンドのサイトには、SNS から人が来たと分かれば十分だろう。プロフィールの URL 全体まで届けば、持ち主の名前を推測できる。2017年1月の W3C Referrer Policy 勧告候補 はこの例を挙げた。役立つ紹介と余分な住所は、同じ封筒に入っていた。

新しいポリシーには封筒の折り方が並ぶ。no-referrer は何も送らない。origin は方式、ホスト、ポートだけを送り、個別のページへの道筋は伏せる。strict-origin-when-cross-origin は同じオリジンへの要求には整えた完全な URL を使い、安全な別オリジンにはオリジンだけを示す。HTTPS のページから HTTP へ移るときは送らない。暗号化されない道ではサイト名だけでも漏れるからだ。ページの作者は応答ヘッダーなどで、この紹介のしかたを指定できる。

紹介する権限の置き場所が変わった。古い HTTP の仕組みは、リンクの出発地を行き先へ知らせる方法をブラウザーに渡した。ポリシーは出発ページにも、どれだけ話すかを決める手段を渡した。SNS はバンドに自分の名前を伝えながら、会員のプロフィールの道順を手元に残せる。集客の手掛かりは届き、個人の部屋番号は届かない。

2022年6月の HTTP Semantics、RFC 9110 でも Referer のつづりはそのままだ。ログ、分析、リンクの保守には今も役立つ。URL にアカウント名や機密の資源名が入れば、直前の閲覧状況を外へ見せる危険もある。仕様は断片とユーザー情報を除き、オリジン以外の部分を短くすることを認め、HTTPS の参照元を安全でない HTTP 要求へ送ることを禁じる。1996年の名刺は捨てられず、差し出す前に折りたためるようになった。

W3C の公開履歴 は2014年の最初の公開草案から2017年の勧告候補へ続く。仕組みは一つのクリックで分かる。プロフィールからバンドへ行く。バンドにはどの街から来たかが伝わる。訪問者の部屋番号まで尋ねる必要はない。