chrome.contentSettings

説明

chrome.contentSettings API を使用して、ウェブサイトが Cookie、JavaScript、プラグインなどの機能を使用できるかどうかを制御する設定を変更します。一般的に、コンテンツの設定では、Chrome の動作をグローバルではなくサイトごとにカスタマイズできます。

権限

contentSettings

API を使用するには、拡張機能のマニフェストで "contentSettings" 権限を宣言する必要があります。次に例を示します。

{
  "name": "My extension",
  ...
  "permissions": [
    "contentSettings"
  ],
  ...
}

コンセプトと使用方法

コンテンツ設定パターン

パターンを使用して、各コンテンツ設定が影響するウェブサイトを指定できます。たとえば、https://*.youtube.com/* は youtube.com とそのすべてのサブドメインを指定します。コンテンツ設定パターンの構文は、一致パターンの構文と同じですが、いくつか違いがあります。

  • httphttpsftp の URL の場合、パスはワイルドカード(/*)である必要があります。file の URL の場合、パスは完全に指定されている必要があり、ワイルドカードを含めることはできません
  • 一致パターンとは異なり、コンテンツ設定パターンではポート番号を指定できます。ポート番号を指定すると、そのポートを持つウェブサイトのみがパターンに一致します。ポート番号が指定されていない場合、パターンはすべてのポートに一致します。

パターンの優先順位

特定のサイトに複数のコンテンツ設定ルールが適用される場合、より具体的なパターンを持つルールが優先されます。

たとえば、次のパターンは優先順位で並べ替えられます。

  1. https://www.example.com/*
  2. https://*.example.com/*(example.com とすべてのサブドメインに一致)
  3. <all_urls>(すべての URL に一致)

3 種類のワイルドカードは、パターンの具体性に影響します。

  • ポートのワイルドカード(https://www.example.com:*/* など)
  • スキームのワイルドカード(*://www.example.com:123/* など)
  • ホスト名のワイルドカード(https://*.example.com:123/* など)

あるパターンが別のパターンよりも一部でより具体的であり、別の部分でより具体的でない場合、異なる部分はホスト名、スキーム、ポートの順にチェックされます。たとえば、次のパターンは優先度順に並べられています。

  1. https://www.example.com:*/* ホスト名とスキームを指定します。
  2. *:/www.example.com:123/* ホスト名は指定されていますが、スキームは指定されていないため、優先度はそれほど高くありません。
  3. https://*.example.com:123/* ポートとスキームを指定していますが、ホスト名にワイルドカードが含まれているため、優先度は低くなります。

メイン パターンとサブパターン

適用するコンテンツ設定を決定する際に考慮される URL は、コンテンツ タイプによって異なります。たとえば、contentSettings.notifications の設定は、オムニボックスに表示される URL に基づきます。この URL は「プライマリ」URL と呼ばれます。

一部のコンテンツ タイプでは、追加の URL を考慮できます。たとえば、サイトが contentSettings.cookies を設定できるかどうかは、HTTP リクエストの URL(この場合はプライマリ URL)と、オムニボックスに表示される URL(セカンダリ URL)に基づいて決定されます。

複数のルールにプライマリ パターンとセカンダリ パターンがある場合、より具体的なプライマリ パターンを持つルールが優先されます。複数のルールに同じプライマリ パターンがある場合、より具体的なセカンダリ パターンを持つルールが優先されます。たとえば、次の主/副パターンのペアのリストは、優先順位で並べ替えられています。

優先度プライマリ パターンセカンダリ パターン
1https://www.moose.com/*https://www.wombat.com/*
2https://www.moose.com/*<all_urls>
3<all_urls>https://www.wombat.com/*
4<all_urls><all_urls>

画像コンテンツ設定では、セカンダリ パターンはサポートされていません。

リソース識別子

リソース ID を使用すると、コンテンツ タイプの特定のサブタイプのコンテンツ設定を指定できます。現在、リソース ID をサポートしているコンテンツ タイプは contentSettings.plugins のみです。リソース ID は特定のプラグインを識別します。コンテンツ設定を適用する際、まず特定のプラグインの設定がチェックされます。特定のプラグインの設定が見つからない場合は、プラグインの一般的なコンテンツ設定が確認されます。

たとえば、コンテンツ設定ルールにリソース識別子 adobe-flash-player とパターン <all_urls> がある場合、そのパターンがより具体的であっても、リソース識別子がなくパターン https://www.example.com/* があるルールよりも優先されます。

コンテンツ タイプのリソース識別子のリストを取得するには、contentSettings.ContentSetting.getResourceIdentifiers() メソッドを呼び出します。返されるリストは、ユーザーのマシンにインストールされているプラグインのセットによって変わる可能性がありますが、Chrome はプラグインの更新間で識別子を安定させようとします。

この API を試すには、chrome-extension-samples リポジトリから contentSettings API の例をインストールします。

AutoVerifyContentSetting

Chrome 113 以降

列挙型

"allow"

"block"

CameraContentSetting

Chrome 46 以降

列挙型

"allow"

"block"

"ask"

ClipboardContentSetting

Chrome 121 以降

列挙型

"allow"

"block"

"ask"

ContentSetting

プロパティ

  • クリア

    void

    この拡張機能によって設定されたコンテンツ設定ルールをすべてクリアします。

    clear 関数は次のようになります。

    (details: object) => {...}

    • 詳細

      オブジェクト

      • スコープ

        スコープ(省略可)

        設定をクリアする場所(デフォルト: regular)。

    • 戻り値

      Promise<void>

      Chrome 96 以降
  • get

    void

    指定された URL のペアの現在のコンテンツ設定を取得します。

    get 関数は次のようになります。

    (details: object) => {...}

    • 詳細

      オブジェクト

      • シークレット

        ブール値(省略可)

        シークレット セッションのコンテンツ設定を確認するかどうか。(デフォルトは false)

      • primaryUrl

        文字列

        コンテンツ設定を取得するプライマリ URL。プライマリ URL の意味は、コンテンツ タイプによって異なります。

      • resourceIdentifier

        設定を取得するコンテンツのタイプをより具体的に示す識別子。

      • secondaryUrl

        文字列 省略可

        コンテンツ設定を取得するセカンダリ URL。デフォルトはプライマリ URL です。セカンダリ URL の意味はコンテンツ タイプによって異なり、すべてのコンテンツ タイプでセカンダリ URL が使用されるわけではありません。

    • 戻り値

      Promise<object>

      Chrome 96 以降
  • getResourceIdentifiers

    void

    getResourceIdentifiers 関数は次のようになります。

    () => {...}

  • set

    void

    新しいコンテンツ設定ルールを適用します。

    set 関数は次のようになります。

    (details: object) => {...}

    • 詳細

      オブジェクト

      • primaryPattern

        文字列

        メインの URL のパターン。パターンの形式について詳しくは、コンテンツ設定パターンをご覧ください。

      • resourceIdentifier

        コンテンツ タイプのリソース識別子。

      • スコープ

        スコープ(省略可)

        設定を行う場所(デフォルト: regular)。

      • secondaryPattern

        文字列 省略可

        セカンダリ URL のパターン。デフォルトでは、すべての URL が一致します。パターンの形式について詳しくは、コンテンツ設定のパターンをご覧ください。

      • 設定

        任意

        このルールによって適用される設定。有効な値については、個々の ContentSetting オブジェクトの説明をご覧ください。

    • 戻り値

      Promise<void>

      Chrome 96 以降

CookiesContentSetting

Chrome 44 以降

列挙型

"allow"

"block"

"session_only"

FullscreenContentSetting

Chrome 44 以降

"allow"

ImagesContentSetting

Chrome 44 以降

列挙型

"allow"

"block"

JavascriptContentSetting

Chrome 44 以降

列挙型

"allow"

"block"

LocationContentSetting

Chrome 44 以降

列挙型

"allow"

"block"

"ask"

MicrophoneContentSetting

Chrome 46 以降

列挙型

"allow"

"block"

"ask"

MouselockContentSetting

Chrome 44 以降

"allow"

MultipleAutomaticDownloadsContentSetting

Chrome 44 以降

列挙型

"allow"

"block"

"ask"

NotificationsContentSetting

Chrome 44 以降

列挙型

"allow"

"block"

"ask"

PluginsContentSetting

Chrome 44 以降

"block"

PopupsContentSetting

Chrome 44 以降

列挙型

"allow"

"block"

PpapiBrokerContentSetting

Chrome 44 以降

"block"

ResourceIdentifier

リソース識別子を使用するコンテンツ タイプは contentSettings.plugins のみです。詳細については、リソース識別子をご覧ください。

プロパティ

  • 説明

    文字列 省略可

    リソースの説明(人が読める形式)。

  • id

    文字列

    指定されたコンテンツ タイプの Resource ID。

Scope

Chrome 44 以降

ContentSetting のスコープ。regular: 通常のプロファイルの設定(他の場所でオーバーライドされていない場合、シークレット モードのプロファイルに継承されます)、incognito\_session\_only: シークレット モードのプロファイルの設定。シークレット モードのセッション中にのみ設定でき、シークレット モードのセッションが終了すると削除されます(通常の設定をオーバーライドします)。

列挙型

"regular"

"incognito_session_only"

SoundContentSetting

保留中

列挙型

"allow"

"block"

プロパティ

automaticDownloads

サイトが複数のファイルを自動的にダウンロードすることを許可するかどうか。allow: サイトに複数のファイルの自動ダウンロードを許可する、block: サイトに複数のファイルの自動ダウンロードを許可しない、ask: サイトが最初のファイルの後にファイルを自動的にダウンロードしようとしたときに確認する、のいずれか。デフォルトは ask です。プライマリ URL は、最上位フレームの URL です。セカンダリ URL は使用されません。

autoVerify

Chrome 113 以降

サイトで Private State Tokens API の使用を許可するかどうか。allow: サイトが Private State Tokens API を使用できるようにします。 block: サイトが Private State Tokens API を使用できないようにします。デフォルトは allow です。set() を呼び出す場合、プライマリ URL パターンは <all_urls> である必要があります。セカンダリ URL は使用されません。

camera

Chrome 46 以降

サイトがカメラにアクセスすることを許可するかどうか。allow: サイトによるカメラへのアクセスを許可する、block: サイトによるカメラへのアクセスを許可しない、ask: サイトがカメラへのアクセスを求めたときに確認する、のいずれか。デフォルトは ask です。プライマリ URL は、カメラへのアクセスをリクエストしたドキュメントの URL です。セカンダリ URL は使用されません。注: 両方のパターンが '<all_urls>' の場合、'allow' 設定は無効です。

clipboard

Chrome 121 以降

サイトが Async Clipboard API の高度な機能を使用してクリップボードにアクセスできるようにするかどうかを指定します。「高度な」機能には、ユーザー操作後の組み込み形式の書き込み以外の機能、つまり読み取り機能、カスタム形式の書き込み機能、ユーザー操作なしの書き込み機能が含まれます。allow: サイトによる高度なクリップボード機能の使用を許可する、block: サイトによる高度なクリップボード機能の使用を許可しない、ask: サイトが高度なクリップボード機能を使用しようとしたときに確認する、のいずれか 1 つ。 デフォルトは ask です。プライマリ URL は、クリップボードへのアクセスをリクエストしたドキュメントの URL です。セカンダリ URL は使用されません。

cookies

ウェブサイトによる Cookie や他のローカルデータの設定を許可するかどうか。allow: Cookie を受け入れる、block: Cookie をブロックする、session\_only: 現在のセッションのみ Cookie を受け入れる、のいずれか。デフォルトは allow です。プライマリ URL は、Cookie のオリジンを表す URL です。セカンダリ URL は、最上位フレームの URL です。

fullscreen

非推奨。すでに効果はありません。全画面表示の権限がすべてのサイトに自動的に付与されるようになりました。値は常に allow です。

images

画像を表示するかどうか。allow: 画像を表示する、block: 画像を表示しないのいずれか。デフォルトは allow です。プライマリ URL は、最上位フレームの URL です。セカンダリ URL は画像の URL です。

javascript

JavaScript を実行するかどうか。allow: JavaScript を実行します。block: JavaScript を実行しません。デフォルトは allow です。プライマリ URL は、最上位フレームの URL です。セカンダリ URL は使用されません。

location

位置情報の使用を許可するかどうか。allow: サイトがユーザーの物理的な位置情報を追跡することを許可する、block: サイトがユーザーの物理的な位置情報を追跡することを許可しない、ask: サイトがユーザーの物理的な位置情報を追跡することを許可する前に確認する、のいずれか。デフォルトは ask です。プライマリ URL は、位置情報をリクエストしたドキュメントの URL です。セカンダリ URL は、最上位フレームの URL です(リクエスト元 URL と異なる場合もあれば、同じ場合もあります)。

microphone

Chrome 46 以降

サイトにマイクへのアクセスを許可するかどうか。allow: サイトがマイクにアクセスすることを許可する、block: サイトがマイクにアクセスすることを許可しない、ask: サイトがマイクにアクセスしようとしたときに確認する、のいずれか。デフォルトは ask です。プライマリ URL は、マイクへのアクセスをリクエストしたドキュメントの URL です。セカンダリ URL は使用されません。注: 両方のパターンが '<all_urls>' の場合、'allow' 設定は無効です。

mouselock

非推奨。すでに効果はありません。マウスロックの権限がすべてのサイトに自動的に付与されるようになりました。値は常に allow です。

notifications

サイトにデスクトップ通知の表示を許可するかどうか。allow: サイトでデスクトップ通知を表示することを許可する、block: サイトでデスクトップ通知を表示することを許可しない、ask: サイトでデスクトップ通知を表示する前に毎回確認する、のいずれか。 デフォルトは ask です。プライマリ URL は、通知を表示するドキュメントの URL です。セカンダリ URL は使用されません。

plugins

非推奨。Chrome 88 で Flash のサポートが終了したため、この権限は無効になりました。値は常に block です。set()clear() への呼び出しは無視されます。

popups

サイトでポップアップを表示することを許可するかどうか。allow: サイトにポップアップの表示を許可する、block: サイトにポップアップの表示を許可しない、のいずれか。デフォルトは block です。プライマリ URL は、最上位フレームの URL です。セカンダリ URL は使用されません。

unsandboxedPlugins

非推奨。以前は、サイトでサンドボックス化されていないプラグインを実行することを許可するかどうかを制御していましたが、Chrome 88 で Flash ブローカー プロセスが削除されたため、この権限は無効になりました。値は常に block です。set()clear() への呼び出しは無視されます。