CSP: prefetch-src

HTTP の Content-Security-Policy (CSP) における prefetch-src ディレクティブは、事前読み込みまたは事前描画することができる有効なリソースを指定します。

CSP バージョン 3
ディレクティブ種別 フェッチディレクティブ
default-src fallback あり。このディレクティブがない場合、ユーザーエージェントは default-src ディレクティブを探します。

構文

prefetch-src ポリシーには、1つ以上のソースが許可されています。

Content-Security-Policy: prefetch-src <source>;
Content-Security-Policy: prefetch-src <source> <source>;

ソース

<source> は以下のうちの一つを取ることができます。

<host-source>
名前又は IP アドレスによるインターネットホストで、任意で URL スキームやポート番号を付けることができます。サイトのアドレスはワイルドカード (アスタリスク文字、 '*') で始めることができ、更にポート番号にワイルドカード ('*') を使ってすべての有効なポート番号をソースとして示すことができます。
例:
  • http://*.example.com: http: のスキームを使用した、 example.com のすべてのサブドメインからのすべての読み込みの試行に一致します。
  • mail.example.com:443: mail.example.com の443番ポートへのアクセスの試行に一致します。
  • https://store.example.com: https: を使用した store.example.com へのアクセスの試行に一致します。
<scheme-source>
'http:' 又は 'https:' のようなスキーマです。コロンは必要です。単一引用符は使用しないでください。 data スキーマも指定することができます (非推奨)。
  • data: コンテンツのソースとして data: の URI を使うことができるようにします。これは安全ではありません。攻撃者は任意の data: URI を挿入することもできます。使用は控え、スクリプトには絶対に使用しないでください。
  • mediastream: mediastream: の URI をコンテンツのソースとして使用することができるようにします。
  • blob: blob: の URI をコンテンツのソースとして使用することができるようにします。
  • filesystem: filesystem: の URI をコンテンツのソースとして使用することができるようにします。
'self'
保護された文書が提供されたオリジンを、同じ URL スキーム及びポート番号で参照します。単一引用符が必要です。ブラウザーによっては source ディレクティブから blob 及び filesystem を独自に除外していることがあります。これらのコンテンツ種別を許可する必要がるサイトは、 Data 属性を使用して指定することができます。
'unsafe-inline'
インラインの <script> 要素、 javascript: の URL、インラインイベントハンドラー、インライン <style> 要素のような、インラインリソースの使用を許可します。単一引用符が必要です。
'unsafe-eval'
文字列からコードを生成する eval() 及び同様のメソッドの利用を許可します。単一引用符が必要です。
'none'
空のセットを参照します。つまり、一致する URL はありません。単一引用符が必要です。
'nonce-<base64-value>'
暗号化ノンス (一度だけ使われる数値) を使用する特定のインラインスクリプトのためのホワイトリストです。サーバーはポリシーを転送するたびに固有のノンスを生成する必要があります。リソースのポリシーを他の方法で回避することを難しくするため、推測できないノンスを提供することが重要です。例えば安全でないインラインスクリプトを参照してください。ノンスを指定すると、最近のブラウザーは、ノンスの対応がない古いブラウザーのために設定されている可能性がある 'unsafe-inline' を無視するようになります。
'<hash-algorithm>-<base64-value>'
スクリプトまたはスタイルの sha256, sha384, sha512 の何れかのハッシュです。このソースは、ハッシュを生成するために使用する暗号化アルゴリズムと、スクリプトまたはスタイルのハッシュを base64 でエンコードしたものの二つの部分をダッシュで区切ったもので構成されます。ハッシュを生成するときは、 <script> または <style> タグを含めないようにし、大文字・小文字の区別と、ホワイトスペースの扱い (先頭や末尾のホワイトスペースを含む) に注意してください。例えば安全でないインラインスクリプトを参照してください。 CSP 2.0 では、これはインラインスクリプトにのみ適用されます。 CSP 3.0 では script-src で外部スクリプトが指定された場合にも利用できます。

ヘッダーが一致しないリソースの事前読み込み

次のコンテンツセキュリティポリシーを持つページがあったとします。

Content-Security-Policy: prefetch-src https://example.com/

次のコードで読み込もうとすると、指定された URL が prefetch-src のソース一覧にないので、ネットワークエラーになります。

<link rel="prefetch" src="https://example.org/"></link>
<link rel="prerender" src="https://example.org/"></link>

仕様書

仕様書 状態 備考
Content Security Policy Level 3
prefetch-src の定義
草案 初回定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
prefetch-src
実験的
Chrome 未対応 なし
補足
未対応 なし
補足
補足 See bug 801561.
Edge 未対応 なしFirefox 未対応 なし
補足
未対応 なし
補足
補足 See bug 1457204.
IE 未対応 なしOpera 未対応 なしSafari 未対応 なし
補足
未対応 なし
補足
補足 See bug 185070.
WebView Android 未対応 なし
補足
未対応 なし
補足
補足 See bug 801561.
Chrome Android 未対応 なし
補足
未対応 なし
補足
補足 See bug 801561.
Firefox Android 未対応 なし
補足
未対応 なし
補足
補足 See bug 1457204.
Opera Android 未対応 なしSafari iOS 未対応 なし
補足
未対応 なし
補足
補足 See bug 185070.
Samsung Internet Android 未対応 なし

凡例

未対応  
未対応
実験的。動作が変更される可能性があります。
実験的。動作が変更される可能性があります。
実装ノートを参照してください。
実装ノートを参照してください。

関連情報