window.open()で開いたリンクのリファラー挙動: セキュリティとプライバシーの観点から解説

リファラー(Referrer)は、ウェブページから別のウェブページに移動する際に、移動元のウェブページの情報を含むHTTPヘッダーの一部です。これにより、ウェブサイト所有者はトラフィックのソースを追跡し、分析できます。しかし、window.open()メソッドを使用して新しいウィンドウまたはタブでリンクを開く場合、リファラーの振る舞いが異なることがあります。以下で詳細に説明します。

window.open()で新しいウィンドウまたはタブを開く場合のリファラーの挙動

  1. 同じドメイン内での遷移:

    • window.open()を使用して同じドメイン内のページに移動する場合、通常のリファラーが付きます。つまり、元のページのURLがリファラーとして渡されます。
  2. 異なるドメインへの遷移:

    • window.open()を使用して異なるドメインへのリンクを開く場合、リファラーは通常空になります。これはセキュリティ上の理由からです。異なるドメインリファラー情報を送信すると、プライバシーの侵害や情報漏洩のリスクが生じる可能性があるためです。
  3. noopenerオプションを使用:

    • より安全なリンクを提供するために、window.open()メソッドに"noopener"オプションを指定することができます。これを行うと、リファラー情報が送信されないようになります。
window.open('https://example.com', '_blank', 'noopener');
  1. noreferrerオプションを使用:
    • 一部のブラウザでは、より厳密なプライバシー制御を提供するために、"noreferrer"オプションを使用することもできます。これを指定すると、リファラー情報が送信されないだけでなく、新しいウィンドウまたはタブのリファラー情報も削除されます。
window.open('https://example.com', '_blank', 'noreferrer');

まとめ

window.open()を使用して新しいウィンドウまたはタブを開く際のリファラーの挙動は、セキュリティとプライバシーを考慮して設計されています。同じドメイン内での遷移では通常のリファラーが保持されますが、異なるドメインへの遷移ではリファラー情報が送信されないか、削除されることがあります。安全性とプライバシーを重視する場合、"noopener"または"noreferrer"オプションを使用することを検討する価値があります。