2026/03/30
異なるドメイン間での流入元特定/データ連携
同一ドメイン内では使えた仕組みがそのまま使えないケースが多い
Referer の省略/制限
HTTPS → HTTP の遷移や Referrer-Policy の設定によって、Refererが送られない
Cookie の分離
ブラウザは Cookie をドメイン単位で管理するため、site-a.com の Cookie は site-b.com には送られない
localStorage / sessionStorage の分離
Web Storage もドメインをまたいで読み書きできない
特定/連携方法
UTM パラメータ
Google Analytics が定めた流入元を識別するためのクエリパラメータ
URL に付与するだけで実装できる
https://site-b.com/landing?
utm_source=site-a
&utm_medium=banner
&utm_campaign=summer2024
カスタムクエリパラメータ
自社サービス間の連携専用の識別子をクエリパラメータとして使用する
https://site-b.com/landing?
ref_service=service_a
&ref_feature=dashboard
&ref_user_token=abc123
Prefix を統一することで区別しやすくなる
ref_service → 送り元サービスの識別子
ref_feature → 送り元の機能・画面
ref_plan → 送り元ユーザーのプラン
Referer
リクエストの直前にいたページの URL
補助的な流入元把握に使えるが、以下ケースなど送られない場合もあるため信頼性は低い
- HTTPS → HTTP の遷移(セキュリティ上の理由で省略)
rel="noreferrer"が付いたリンク(<a href="..." rel="noreferrer">)Referrer-Policyの設定(no-referrer・origin・strict-origin等)- ブックマーク・アドレスバーからの直接アクセス
- 一部のプライバシー保護ブラウザ・拡張機能
ワンタイムトークン
UTM パラメータやカスタムクエリパラメータでは URL に露出してしまうユーザー ID・プラン・権限などの機密情報を、安全にドメイン間で引き渡す手法
双方のサービスが同じ Redis を参照できることが前提条件(または Redis を持つ側が専用 API を用意)
① 送り元(site-a.com)がバックエンドでトークンを生成し
ユーザー ID などの機密情報を Redis に一時保存する(有効期限 5分など)
② トークンだけを URL に付与して受け取り先(site-b.com)にリダイレクト
https://site-b.com/landing?token=abc123xyz
↑ URL に user_id や plan は一切含まれない
③ 受け取り先がトークンを取り出し Redis に問い合わせて情報を復元する
④ 取り出したトークンを即座に削除(ワンタイム性を保証)
JWT トークン
Redis を使わずに JWT に情報を埋め込む手法であり、ステートレスな構成になる
ただしトークンの即時無効化ができない点に注意
Cookie / localStorage
1st Party Cookie
同一の親ドメイン(.example.com)を共有している場合に、Cookie のドメイン指定でサブドメイン間の状態を共有できる
# site-a.example.com → site-b.example.com の場合
# Domain=.example.com を指定することで両方から読める
localStorage
同一ドメイン内でのページを跨いだ複数ステップの情報保持に活用する
各手法の比較・使い分け
| 手法 | 向いている用途 |
|---|---|
| UTM パラメータ | 流入元の分析・マーケティング計測・GA 連携 |
カスタムクエリパラメータ(ref_service 等) | サービス間の流入元判定・画面出し分け・内部システム連携 |
| Referer ヘッダー | 補助的な流入元把握 |
| ワンタイムトークン | ユーザー情報・権限の安全な引き渡し |
| JWT トークン | 軽量な情報引き渡し・ステートレス構成 |
| 1st Party Cookie | サブドメイン間での状態共有 |
| localStorage | 同一ドメイン内での複数ステップの保持 |