shwldshwld7 days ago

自サイトへのリンクにnoreferrerを付けるとアクセス元がわからなくなる

target="_blank" のリンクに rel="noopener noreferrer" を機械的に付けがちだが、noreferrer は Referer ヘッダーを送らなくする。自サイト内のリンク(例: サービスサイトからサポートサイトへ)に付けると、遷移先のアクセス解析で「どこから来たか」が取れなくなり、direct traffic として計上されてしまう。

noopenernoreferrer は別の役割:

  • noopener — 遷移先ページが window.opener 経由で元ページを操作できないようにする(セキュリティ対策)。Referer ヘッダーには影響しない
  • noreferrer — Referer ヘッダーを送らない。遷移先がアクセス元を知れなくなる。noopener の効果も暗黙的に含む

現代のブラウザは target="_blank" に対して noopener 相当の挙動をデフォルトで適用するので、noopener すら省略できる場面が多い。ただし古いブラウザの互換性を考慮して rel="noopener" だけ付けるのが安全な落とし所。

使い分け:

  1. 外部の信頼できないリンクrel="noopener noreferrer" でよい。Referer を渡す必要がない
  2. 自社・自サービスのリンクrel="noopener" のみ。Referer を残してアクセス解析を活かす
  3. 内部リンク(同一ドメイン) — 通常は target="_blank" 自体が不要。使うなら rel="noopener" で十分