chromeのreferrer-policyについて
[9/8追記]
chrome 85がリリースされたのに、defaultのreferrer-policy変わってないなと思ったら段階的に変わっていくみたいです。
A new default Referrer-Policy for Chrome: strict-origin-when-cross-origin
こんにちは。
業務でchromeのreferrer-policyについてちょっと調べることがあったので、今日は軽くまとめです。
referrer-policyとは
そもそも僕が、referrer-policyについてそんなに詳しくなかったのでまずは簡単な説明。
Referrer-policyは、リクエスト時にreferer headerにどれくらいreferer情報をつけるかを設定するためのヘッダーです。
refererの情報量とは、具体的に
- origin, path, query 全て
- originだけ
- 情報なし
の3パターンがあります。
referrer-policy headerに付けられる値は、
- no-referrer
- no-referrer-when-downgrade
- origin
- origin-when-cross-origin
- same-origin
- strict-origin
- strict-origin-when-cross-origin
- unsafe-url
があります。
それぞれの値がどういう振る舞いをするかなどの詳細はMDNがよくまとまっています。
referer
の正しいスペルは referrer
ですが、RFCの標準化時にスペルミスしたものがそのまま登録されたという話は、 Real World HTTP で読んだ気がします。
referrer-policyの方は、後からできたので正しいスペルになってるそうです。
chromeのdefault値について
現在のchromeは、 デフォルトのreferrer-policyが no-referrer-when-downgrade
になっています。
no-referrer-when-downgrade
は、https => https や http => https などのセキュリティ水準が同一または改善される場合は、クエリなどの全ての情報が送信されますが、https => http のように水準が低下する場合は、refererを送信しない挙動になっています。
そしてここからが本題です。
chromeのdefaultのreferrer-policy が version 85から strict-origin-when-cross-origin
へ変わるそうです。
www.chromestatus.com
strict-origin-when-cross-origin
は、同一オリジンの場合はクエリを含む全ての情報を送信し、クロスオリジンの場合はoriginのみを送信、 https => httpへのセキュリティレベルの落ちる通信では情報を送信しません。
僕は、会社のPCのデフォルトブラウザをMicrosoft Edgeのカナリアリリース版を使ってるのですが、EdgeはCanary v79と Dev v79から反映されていました。
stable版に、いつ反映されるかは確認できませんでした。(version 83.0.478.64現在は no-referrer-when-downgrade
でした)
docs.microsoft.com
今回、業務で開発してるアプリケーションでreferer headerを使っている部分があり、カナリアリリース版のEdgeでアクセスした場合に、挙動がおかしかったので気付きました。
ちなみに、僕の試した環境だとサブドメインが同じ場合でもクロスオリジンとみなされていました。 (originしか入っていなかった)
おわりに
今回は、referrer-policyについてと、chromeのreferrer-policyのdefaultが変更されることについてまとめました。
普段、カナリアリリース版のEdgeを使っていますが、今回初めて業務の役にたったきがします笑
ベータ版とかを積極的に使っていくこともやっぱり大事ですね笑
御拝読ありがとうございました。