説明
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 の場合、パスは完全に指定されている必要があり、ワイルドカードを含めることはできません。- 一致パターンとは異なり、コンテンツ設定パターンではポート番号を指定できます。ポート番号を指定すると、そのポートを持つウェブサイトのみがパターンに一致します。ポート番号が指定されていない場合、パターンはすべてのポートに一致します。
パターンの優先順位
特定のサイトに複数のコンテンツ設定ルールが適用される場合、より具体的なパターンを持つルールが優先されます。
たとえば、次のパターンは優先順位で並べ替えられます。
https://www.example.com/*
https://*.example.com/*
(example.com とすべてのサブドメインに一致)<all_urls>
(すべての URL に一致)
3 種類のワイルドカードは、パターンの具体性に影響します。
- ポートのワイルドカード(
https://www.example.com:*/*
など) - スキームのワイルドカード(
*://www.example.com:123/*
など) - ホスト名のワイルドカード(
https://*.example.com:123/*
など)
あるパターンが別のパターンよりも一部でより具体的であり、別の部分でより具体的でない場合、異なる部分はホスト名、スキーム、ポートの順にチェックされます。たとえば、次のパターンは優先度順に並べられています。
https://www.example.com:*/*
ホスト名とスキームを指定します。*:/www.example.com:123/*
ホスト名は指定されていますが、スキームは指定されていないため、優先度はそれほど高くありません。https://*.example.com:123/*
ポートとスキームを指定していますが、ホスト名にワイルドカードが含まれているため、優先度は低くなります。
メイン パターンとサブパターン
適用するコンテンツ設定を決定する際に考慮される URL は、コンテンツ タイプによって異なります。たとえば、contentSettings.notifications
の設定は、オムニボックスに表示される URL に基づきます。この URL は「プライマリ」URL と呼ばれます。
一部のコンテンツ タイプでは、追加の URL を考慮できます。たとえば、サイトが contentSettings.cookies
を設定できるかどうかは、HTTP リクエストの URL(この場合はプライマリ URL)と、オムニボックスに表示される URL(セカンダリ URL)に基づいて決定されます。
複数のルールにプライマリ パターンとセカンダリ パターンがある場合、より具体的なプライマリ パターンを持つルールが優先されます。複数のルールに同じプライマリ パターンがある場合、より具体的なセカンダリ パターンを持つルールが優先されます。たとえば、次の主/副パターンのペアのリストは、優先順位で並べ替えられています。
優先度 | プライマリ パターン | セカンダリ パターン |
---|---|---|
1 | https://www.moose.com/* | https://www.wombat.com/* |
2 | https://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
列挙型
"allow"
"block"
CameraContentSetting
列挙型
"allow"
"block"
"ask"
ClipboardContentSetting
列挙型
"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
関数は次のようになります。() => {...}
-
戻り値
Promise<ResourceIdentifier[]>
Chrome 96 以降
-
-
set
void
新しいコンテンツ設定ルールを適用します。
set
関数は次のようになります。(details: object) => {...}
-
詳細
オブジェクト
-
primaryPattern
文字列
メインの URL のパターン。パターンの形式について詳しくは、コンテンツ設定パターンをご覧ください。
-
resourceIdentifier
コンテンツ タイプのリソース識別子。
-
スコープ
スコープ(省略可)
設定を行う場所(デフォルト: regular)。
-
secondaryPattern
文字列 省略可
セカンダリ URL のパターン。デフォルトでは、すべての URL が一致します。パターンの形式について詳しくは、コンテンツ設定のパターンをご覧ください。
-
設定
任意
このルールによって適用される設定。有効な値については、個々の ContentSetting オブジェクトの説明をご覧ください。
-
-
戻り値
Promise<void>
Chrome 96 以降
-
CookiesContentSetting
列挙型
"allow"
"block"
"session_only"
FullscreenContentSetting
値
"allow"
ImagesContentSetting
列挙型
"allow"
"block"
JavascriptContentSetting
列挙型
"allow"
"block"
LocationContentSetting
列挙型
"allow"
"block"
"ask"
MicrophoneContentSetting
列挙型
"allow"
"block"
"ask"
MouselockContentSetting
値
"allow"
MultipleAutomaticDownloadsContentSetting
列挙型
"allow"
"block"
"ask"
NotificationsContentSetting
列挙型
"allow"
"block"
"ask"
PluginsContentSetting
値
"block"
PopupsContentSetting
列挙型
"allow"
"block"
PpapiBrokerContentSetting
値
"block"
ResourceIdentifier
リソース識別子を使用するコンテンツ タイプは contentSettings.plugins
のみです。詳細については、リソース識別子をご覧ください。
プロパティ
-
説明
文字列 省略可
リソースの説明(人が読める形式)。
-
id
文字列
指定されたコンテンツ タイプの Resource ID。
Scope
ContentSetting のスコープ。regular
: 通常のプロファイルの設定(他の場所でオーバーライドされていない場合、シークレット モードのプロファイルに継承されます)、incognito\_session\_only
: シークレット モードのプロファイルの設定。シークレット モードのセッション中にのみ設定でき、シークレット モードのセッションが終了すると削除されます(通常の設定をオーバーライドします)。
列挙型
"regular"
"incognito_session_only"
SoundContentSetting
列挙型
"allow"
"block"
プロパティ
automaticDownloads
サイトが複数のファイルを自動的にダウンロードすることを許可するかどうか。allow
: サイトに複数のファイルの自動ダウンロードを許可する、block
: サイトに複数のファイルの自動ダウンロードを許可しない、ask
: サイトが最初のファイルの後にファイルを自動的にダウンロードしようとしたときに確認する、のいずれか。デフォルトは ask
です。プライマリ URL は、最上位フレームの URL です。セカンダリ URL は使用されません。
autoVerify
サイトで Private State Tokens API の使用を許可するかどうか。allow
: サイトが Private State Tokens API を使用できるようにします。
block
: サイトが Private State Tokens API を使用できないようにします。デフォルトは allow
です。set()
を呼び出す場合、プライマリ URL パターンは <all_urls>
である必要があります。セカンダリ URL は使用されません。
camera
サイトがカメラにアクセスすることを許可するかどうか。allow
: サイトによるカメラへのアクセスを許可する、block
: サイトによるカメラへのアクセスを許可しない、ask
: サイトがカメラへのアクセスを求めたときに確認する、のいずれか。デフォルトは ask
です。プライマリ URL は、カメラへのアクセスをリクエストしたドキュメントの URL です。セカンダリ URL は使用されません。注: 両方のパターンが '<all_urls>' の場合、'allow' 設定は無効です。
clipboard
サイトが 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
サイトにマイクへのアクセスを許可するかどうか。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()
への呼び出しは無視されます。