説明
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 は特定のプラグインを識別します。コンテンツ設定を適用する際は、まず特定のプラグインの設定が確認されます。特定のプラグインに設定が見つからない場合、プラグインの一般的なコンテンツ設定がチェックされます。
たとえば、コンテンツ設定ルールにリソース ID adobe-flash-player
とパターン <all_urls>
が指定されている場合、そのルールは、リソース ID とパターン https://www.example.com/*
のないルールよりも優先されます(パターンがより具体的であっても同様です)。
コンテンツ タイプのリソース ID のリストを取得するには、contentSettings.ContentSetting.getResourceIdentifiers()
メソッドを呼び出します。返されるリストは、ユーザーのマシンにインストールされているプラグインのセットによって変わる可能性がありますが、Chrome はプラグインの更新間で識別子を安定させようとします。
例
この API を試すには、chrome-extension-samples リポジトリから contentSettings API の例をインストールします。
型
AutoVerifyContentSetting
列挙型
"allow"
「block」
CameraContentSetting
列挙型
"allow"
「block」
「ask」
ClipboardContentSetting
列挙型
"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
PromisegetResourceIdentifiers
関数は次のようになります。(callback?: function) => {...}
-
callback
function 省略可
callback
パラメータは次のようになります。(resourceIdentifiers?: ResourceIdentifier[]) => void
-
resourceIdentifiers
ResourceIdentifier[] 省略可
このコンテンツ タイプのリソース識別子のリスト。このコンテンツ タイプでリソース識別子を使用していない場合は
undefined
。
-
-
戻り値
Promise<ResourceIdentifier[]>
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
列挙型
"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
文字列
指定されたコンテンツ タイプのリソース ID。
Scope
ContentSetting のスコープ。regular
: 通常のプロファイルの設定(他の場所でオーバーライドされていない場合、シークレット モード プロファイルに継承されます)。incognito\_session\_only
: シークレット モード プロファイルの設定。シークレット モード セッション中にのみ設定でき、シークレット モード セッションが終了すると削除されます(通常の設定をオーバーライドします)。
列挙型
「regular」
"incognito_session_only"
プロパティ
automaticDownloads
サイトが複数のファイルを自動的にダウンロードできるようにするかどうか。allow
: サイトに複数のファイルの自動ダウンロードを許可する、block
: サイトに複数のファイルの自動ダウンロードを許可しない、ask
: サイトが最初のファイルの後にファイルを自動的にダウンロードするタイミングを尋ねる、のいずれか。デフォルトは ask
です。プライマリ URL は、最上位フレームの URL です。セカンダリ URL は使用されません。
autoVerify
サイトが Private State Tokens API を使用できるようにするかどうか。次のいずれか。
allow
: サイトが Private State Tokens API を使用できるようにする。
block
: サイトが Private State Tokens API を使用できないようにする。デフォルトは allow
です。プライマリ URL は、最上位フレームの URL です。セカンダリ URL は使用されません。注: set()
を呼び出す場合、プライマリ パターンは にする必要があります。
camera
サイトにカメラへのアクセスを許可するかどうか。次のいずれか。
allow
: サイトがカメラにアクセスできるようにする
block
: サイトがカメラにアクセスできないようにする
ask
: サイトがカメラにアクセスする際に確認する
デフォルトは ask
です。プライマリ URL は、カメラへのアクセスをリクエストしたドキュメントの URL です。セカンダリ URL は使用されません。注: 両方のパターンが「''」の場合、「許可」の設定は無効です。
clipboard
サイトが 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
サイトにマイクへのアクセスを許可するかどうか。次のいずれか:
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()
への呼び出しは無視されます。