browser.contentSettings

説明

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

権限

contentSettings

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

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

コンセプトと使用方法

コンテンツ設定パターン

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

  • http、https、ftp の 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 を使用すると、コンテンツ タイプの特定のサブタイプにコンテンツ設定を指定できます。現在、リソース識別子をサポートしているコンテンツ タイプは contentSettings.plugins のみです。リソース識別子は特定のプラグインを識別します。コンテンツ設定を適用する際、まず特定のプラグインの設定が確認されます。特定のプラグインの設定が見つからない場合は、プラグインの一般的なコンテンツ設定が確認されます。

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

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

例

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

型

AutoVerifyContentSetting

Chrome 113 以降 Chrome 148 以降の browser.*

列挙型

"allow"

"block"

CameraContentSetting

Chrome 46 以降 Chrome 148 以降の browser.*

列挙型

"allow"

"block"

"ask"

ClipboardContentSetting

Chrome 121 以降 Chrome 148 以降の browser.*

列挙型

"allow"

"block"

"ask"

ContentSetting

プロパティ

  • 消去

    void

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

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

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

    • 詳細

      オブジェクト

      • スコープ

        Scope 省略可

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

    • 戻り値

      Promise<void>

      Chrome 96 以降 Chrome 148 以降の browser.*
  • get

    void

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

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

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

    • 詳細

      オブジェクト

      • シークレット

        boolean 省略可

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

      • primaryUrl

        文字列

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

      • resourceIdentifier

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

      • secondaryUrl

        文字列 省略可

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

    • 戻り値

      Promise<object>

      Chrome 96 以降 Chrome 148 以降の browser.*
  • getResourceIdentifiers

    void

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

    () => {...}

  • set

    void

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

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

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

    • 詳細

      オブジェクト

      • primaryPattern

        文字列

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

      • resourceIdentifier

        コンテンツ タイプの Resource Identifier。

      • スコープ

        Scope 省略可

        設定を適用する場所(デフォルト: regular)。

      • secondaryPattern

        文字列 省略可

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

      • 設定

        任意

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

    • 戻り値

      Promise<void>

      Chrome 96 以降 Chrome 148 以降の browser.*

CookiesContentSetting

Chrome 44 以降 Chrome 148 以降の browser.*

列挙型

"allow"

"block"

"session_only"

FullscreenContentSetting

Chrome 44 以降 Chrome 148 以降の browser.*

値

"allow"

ImagesContentSetting

Chrome 44 以降 Chrome 148 以降の browser.*

列挙型

"allow"

"block"

JavascriptContentSetting

Chrome 44 以降 Chrome 148 以降の browser.*

列挙型

"allow"

"block"

LocationContentSetting

Chrome 44 以降 Chrome 148 以降の browser.*

列挙型

"allow"

"block"

"ask"

MicrophoneContentSetting

Chrome 46 以降 Chrome 148 以降の browser.*

列挙型

"allow"

"block"

"ask"

MouselockContentSetting

Chrome 44 以降 Chrome 148 以降の browser.*

値

"allow"

MultipleAutomaticDownloadsContentSetting

Chrome 44 以降 Chrome 148 以降の browser.*

列挙型

"allow"

"block"

"ask"

NotificationsContentSetting

Chrome 44 以降 Chrome 148 以降の browser.*

列挙型

"allow"

"block"

"ask"

PluginsContentSetting

Chrome 44 以降 Chrome 148 以降の browser.*

値

"block"

PopupsContentSetting

Chrome 44 以降 Chrome 148 以降の browser.*

列挙型

"allow"

"block"

PpapiBrokerContentSetting

Chrome 44 以降 Chrome 148 以降の browser.*

値

"block"

ResourceIdentifier

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

プロパティ

  • 説明

    文字列 省略可

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

  • id

    文字列

    指定されたコンテンツ タイプのリソース識別子。

Scope

Chrome 44 以降 Chrome 148 以降の browser.*

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

列挙型

"regular"

"incognito_session_only"

SoundContentSetting

Chrome 141 以降 Chrome 148 以降の browser.*

列挙型

"allow"

"block"

プロパティ

automaticDownloads

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

autoVerify

Chrome 113 以降 Chrome 148 以降の browser.*

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

camera

Chrome 46 以降 Chrome 148 以降の browser.*

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

clipboard

Chrome 121 以降 Chrome 148 以降の browser.*

Async Clipboard API の高度な機能を使用して、サイトにクリップボードへのアクセスを許可するかどうかを指定します。「高度な」機能には、ユーザー ジェスチャー後の組み込み形式の書き込み以外の機能(読み取り機能、カスタム形式の書き込み機能、ユーザー ジェスチャーなしでの書き込み機能など)が含まれます。allow: サイトにクリップボードの高度な機能の使用を許可する、block: サイトにクリップボードの高度な機能の使用を許可しない、ask: サイトがクリップボードの高度な機能の使用をリクエストしたときに確認する、のいずれかです。デフォルトは 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 です。2 つ目の 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 以降 Chrome 148 以降の browser.*

サイトにマイクへのアクセスを許可するかどうか。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() への呼び出しは無視されます。