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 は特定のプラグインを識別します。コンテンツ設定を適用する際は、まず特定のプラグインの設定が確認されます。特定のプラグインに設定が見つからない場合、プラグインの一般的なコンテンツ設定がチェックされます。

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

コンテンツ タイプのリソース ID のリストを取得するには、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

    Promise

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

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

    (details: object, callback?: function) => {...}

    • 詳細

      オブジェクト

      • スコープ

        スコープ(省略可)

        設定を消去する場所(デフォルト: 通常)。

    • callback

      function 省略可

      callback パラメータは次のようになります。

      () => void

    • 戻り値

      Promise<void>

      Chrome 96 以降

      Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されるのと同じ型で解決されます。

  • get

    void

    Promise

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

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

    (details: object, callback?: function) => {...}

    • 詳細

      オブジェクト

      • シークレット

        ブール値(省略可)

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

      • primaryUrl

        文字列

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

      • resourceIdentifier

        設定を取得するコンテンツの種類をより具体的に識別する ID。

      • secondaryUrl

        文字列(省略可)

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

    • callback

      function 省略可

      callback パラメータは次のようになります。

      (details: object) => void

      • 詳細

        オブジェクト

        • 設定

          T

          コンテンツの設定。有効な値については、個々の ContentSetting オブジェクトの説明をご覧ください。

    • 戻り値

      Promise<object>

      Chrome 96 以降

      Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されるのと同じ型で解決されます。

  • getResourceIdentifiers

    void

    Promise

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

    (callback?: function) => {...}

    • callback

      function 省略可

      callback パラメータは次のようになります。

      (resourceIdentifiers?: ResourceIdentifier[]) => void

      • resourceIdentifiers

        ResourceIdentifier[] 省略可

        このコンテンツ タイプのリソース識別子のリスト。このコンテンツ タイプでリソース識別子を使用していない場合は undefined

    • 戻り値
      Chrome 96 以降

      Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されるのと同じ型で解決されます。

  • set

    void

    Promise

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

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

    (details: object, callback?: function) => {...}

    • 詳細

      オブジェクト

      • primaryPattern

        文字列

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

      • resourceIdentifier

        コンテンツ タイプのリソース ID。

      • スコープ

        スコープ(省略可)

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

      • secondaryPattern

        文字列(省略可)

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

      • 設定

        任意

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

    • callback

      function 省略可

      callback パラメータは次のようになります。

      () => void

    • 戻り値

      Promise<void>

      Chrome 96 以降

      Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されるのと同じ型で解決されます。

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

    文字列

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

Scope

Chrome 44 以降

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

列挙型

「regular」

"incognito_session_only"

プロパティ

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 です。プライマリ URL は、最上位フレームの URL です。セカンダリ URL は使用されません。注: set() を呼び出す場合、プライマリ パターンは にする必要があります。

camera

Chrome 46 以降

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

clipboard

Chrome 121 以降

サイトが 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 です。セカンダリ 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 は使用されません。注: 両方のパターンが「''」の場合、「許可」の設定は無効です。

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() への呼び出しは無視されます。