Skip to content

サードパーティ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特殊なクロスサイト連携時

ドメイン設定が困難な場合の回避策

  1. 開発環境: 127.0.0.1localhostを統一
  2. 本番環境: リバースプロキシやCORS設定で同一ドメイン化
  3. ライブサーバー使用時は.vscode/settings.jsonに以下を追加:
json
{
  "liveServer.settings.host": "localhost"
}

トラブルシューティング

  1. ChromeのIssuesタブで詳細確認

  2. 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詳細記事)。