ここ数ヶ月で特定のリンクがクリックされた際のリファラ(ページURL)がドメインしか送信されない状況に陥った。
コンバージョンの計測自体に影響はなさそうだが、どのページのどのリンクからクリックなのか、付与されたパラメータなどが判別出来ず困ったので対処法がないか調査したメモ。
Chrome 85 Will Set Website Referrer Headers if Missing
https://www.searchenginejournal.com/chrome-85-website-referrer-headers/376407/
Chrome 85 Default Referrer Setting
Beginning in Chrome 85, which is scheduled for release in August 2020, any site that does not have a referer security header will be upgraded to strict-origin-when-cross-origin. This will improve security for Chrome browser users as well as improve security for sites that do not have a referer security header.
どうやらChrome 85からリファラの仕様が変わったっぽい。
#環境など
https://aaa.com/abcd/
から
https://bbb.com/efgh/
へアンカーリンク
https://bbb.com/efgh/
側のリンクがクリックされた際に
https://aaa.com/abcd/
のリファラを取得したい。
端末の環境は以下。
Mozilla/5.0 (Linux; Android 10; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.127 Mobile Safari/537.36
#最終的な対処
<meta name="referrer" content="no-referrer-when-downgrade">
上記をhead内に記載したところ、URL全体を含む正確なリファラが送信された。
##参考とその他の設定
ざっくり噛み砕いた内容を書くので厳密には違う場合あります。
Referrer-Policy
https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Referrer-Policy
###no-referrer-when-downgrade
<meta name="referrer" content="no-referrer-when-downgrade">
セキュリティレベルが劣る場合(HTTPS→HTTP)はリファラを渡さない設定。
いままでの既定値。
###strict-origin-when-cross-origin
<meta name="referrer" content="strict-origin-when-cross-origin">
Chrome 85からこれが規定値になったっぽい。
同じオリジン(ドメイン)間でリファラを渡す際にはページURLを渡し、別ドメイン間でのリンクにはドメインのみを渡す。
セキュリティレベルが劣る場合(HTTPS→HTTP)にはなにも送信しない。
###unsafe-url
<meta name="referrer" content="unsafe-url">
いかなる場合でも(HTTPS→HTTPの場合でも)リファラを渡す。
取り扱いには注意しましょうね。
このポリシーは、 HTTPS リソースの URL から安全ではないオリジンへプライベートである可能性がある情報を漏洩します。設定する場合は影響をよく検討してください。
#正直これでいいのか?
Chromeが規定値を変更したくらいだしセキュリティレベル高めていこうねって話なんだろうけど
現状リファラが取れないのは普通に困るので渋々これで行かせてもらいます(今まで普通に取得できていたものだしURL内で個人情報を扱うようなこともないので…)