サードパーティCookieブロック警告の解決方法
問題の説明
React開発中にコンソールに以下の警告が1秒間隔で大量発生する現象:
log
Third-party cookie will be blocked. Learn more in the Issues tab
この警告が連続して増加するため、以下の問題が発生します:
- コンソールの可読性低下
- パフォーマンスへの悪影響懸念
- 今後のブラウザ挙動変更への対応必要性
根本原因
Chromeが2024年後半よりサードパーティCookieを完全ブロックする方針に関連。現時点では警告として表示され、将来的に機能に影響します(Google公式発表)。
解決策
認証クッキーの設定不備が主原因です。以下の手順で対応します:
1. 同一ドメイン構成を確認
フロントエンドとバックエンドを同じドメイン/ポートで運用:
2. SameSite
属性を適切に設定
- 🔴 問題設定:
SameSite=None; Secure
- ✅ 推奨設定:
SameSite=Lax
またはSameSite=Strict
3. Reactでの実装例(TypeScript)
typescript
export function setCookie(
name: string,
value: string,
options: {
days?: number;
sameSite?: 'strict' | 'lax' | 'none';
secure?: boolean;
path?: string;
} = {}
) {
const {
days = 7,
sameSite = 'lax', // デフォルト値をLaxに設定
secure = true, // HTTPS必須環境ではtrueに
path = '/'
} = options;
const expires = new Date(Date.now() + days * 864e5).toUTCString();
document.cookie = [
`${name}=${encodeURIComponent(value)}`,
`expires=${expires}`,
`path=${path}`,
`SameSite=${sameSite}`, // ここで属性を設定
secure ? 'Secure' : '',
].join('; ');
}
属性選択ガイド
設定値 | 使用ケース |
---|---|
Strict | 銀行サイト等高セキュリティ要件 |
Lax | 一般ウェブアプリ(推奨) |
None | 特殊なクロスサイト連携時 |
ドメイン設定が困難な場合の回避策
- 開発環境:
127.0.0.1
とlocalhost
を統一 - 本番環境: リバースプロキシやCORS設定で同一ドメイン化
- ライブサーバー使用時は
.vscode/settings.json
に以下を追加:
json
{
"liveServer.settings.host": "localhost"
}
トラブルシューティング
ChromeのIssuesタブで詳細確認
Cookie設定の検証方法:
javascript
// コンソールで現在のCookieを確認
console.log(document.cookie);
// 期待される出力例:
// "auth_token=abc123; SameSite=Lax; Secure"
重要ポイント
SameSite=Lax/Strict
設定後は警告発生が停止- 2024年末までに全対応必須(Chromeのブロック開始)
- バックエンドのCookie設定も要確認(Express.js例):
javascript
res.cookie('session', token, {
sameSite: 'lax',
secure: true
});
非推奨な対応
- ブラウザ設定で警告を無効化する
SameSite=None
の継続的使用
根本的解決には、クロスサイトトラッキング防止の新しいAPI(Privacy Sandbox)への移行が推奨されています(web.dev詳細記事)。