CSPでGoogleアナリティクス・AdSenseがブロックされる罠 — connect-src/frame-srcの落とし穴と対処【2026】
セキュリティのために厳格なCSP(Content Security Policy)を入れていると、正規のGoogleアナリティクスやAdSenseまで静かにブロックされることがあります。実際に、当方のサイトで「GA4の一部ヒットが弾かれる」「AdSenseの広告枠が表示されない」という問題が起き、いずれもCSPの設定漏れが原因でした。同じ構成の方がハマりやすいので、原因と対処をまとめます。
CSPは「許可したものだけ」通す
CSPは、ページが通信・埋め込みできる先をホワイトリストで制限します。代表的なディレクティブは次の通りです。
| ディレクティブ | 制御対象 |
|---|---|
script-src |
実行できるスクリプトの取得元 |
connect-src |
fetch / XHR / ビーコン等の通信先 |
frame-src |
iframeで埋め込める先 |
img-src |
画像の取得元 |
問題は、許可し忘れたものは黙って拒否されること。エラーはコンソールに出ますが、画面上は「なんとなく動いていない」だけに見えるため、気づきにくいのです。
ケース1:GA4のヒットが一部ブロックされる(connect-src)
GA4は計測ヒットを1つのドメインだけでなく、複数のドメインへ送ります。connect-src に主要ドメインしか許可していないと、コンソールにこんなエラーが大量に出ます。
Refused to connect to 'https://....' because it violates the
following Content Security Policy directive: "connect-src ..."
基本のページビューは通っていても、Google Signals(デモグラフィックやクロスデバイス)用の別ドメインが弾かれ、コンソールエラー+一部データ欠落という中途半端な状態になります。
対処は、connect-src にGA4関連のドメインを追加すること。基本の計測ドメインに加えて、シグナル系・計測補助系のドメインも許可すると、エラーが消えてデータも揃います。許可すべきURLはコンソールエラーにそのまま表示されるので、それを拾って追加するのが確実です。
ケース2:AdSenseの広告が表示されない(frame-src)
AdSenseの広告はiframeで配信されます。ところが、セキュリティ重視のテンプレートでは frame-src を次のように完全禁止にしていることがあります。
frame-src 'none'
これだと、AdSenseのスクリプト自体は読み込めても、広告の中身(iframe)が一切表示されません。審査用にコードを設置しても、広告枠が空のままになります。
対処は、frame-src を 'none' から、Googleの広告配信ドメインを許可する形に変更すること。あわせて、広告スクリプトの取得元を script-src に、計測通信を connect-src に追加します。広告系はサブドメインが多いため、ワイルドカード指定が現実的です。
コンソールエラーが最大のヒント
CSP問題のデバッグは、開発者ツールのコンソールがすべてです。
violates the following Content Security Policy directiveを探す- どのディレクティブ(connect-src / frame-src 等)が拒否したか
- どのURLが拒否されたか
この3点を読めば、「どのディレクティブに、どのドメインを足せばいいか」がそのまま分かります。推測で許可を広げる前に、まずエラーを読みましょう。
設定を変えたらテストも更新する
CSPをユニットテストで検証している場合、ディレクティブを変更したらテストも更新が必要です。たとえば frame-src 'none' を前提にしたテストは、広告のために緩めた時点で落ちます。ポリシーとテストをセットで変えるのを忘れずに。
まとめ
- CSPは「許可漏れ=黙って拒否」。画面では気づきにくい
- GA4は複数ドメインへ送るため、
connect-srcの許可漏れで一部が欠ける - AdSenseは広告がiframe配信なので、
frame-src 'none'だと表示されない - デバッグはコンソールの CSP エラーを読むのが最短
- CSPを変えたら、関連するテストも一緒に更新する
セキュリティを固めることと、計測・収益化を動かすことは両立できます。鍵は「何を許可すべきか」をエラーから正確に読み取ることです。
※ 本記事は当方の実運用での対応をもとにした技術メモです。具体的なドメイン一覧は構成・時期により変わるため、コンソールエラーを根拠に設定してください。
関連記事: AstroでGA4が計測ゼロになる罠 — is:inlineのJSXエスケープでgtagスクリプトが壊れる原因と対処法