説明
ウェブサイトが Cookie、JavaScript、プラグインなどの機能を使用できるかどうかを制御する設定を変更するには、chrome.contentSettings
API を使用します。大まかに言うと、コンテンツ設定では、Chrome の動作をグローバルではなくサイト単位でカスタマイズできます。
権限
contentSettings
API を使用するには、拡張機能のマニフェストで "contentSettings"
権限を宣言する必要があります。次に例を示します。
{
"name": "My extension",
...
"permissions": [
"contentSettings"
],
...
}
コンセプトと使用方法
コンテンツ設定のパターン
各コンテンツ設定が影響を及ぼすウェブサイトをパターンを使って指定できます。たとえば
https://*.youtube.com/*
には、youtube.com とそのすべてのサブドメインを指定します。content の構文は
パターンの設定は一致パターンと同じですが、次の点が異なります。
http
、https
、ftp
の URL の場合、パスにはワイルドカード(/*
)を使用する必要があります。file
URL の場合、パスは 完全に指定する必要があります。また、ワイルドカードは含めないでください。- 一致パターンとは対照的に、コンテンツ設定パターンではポート番号を指定できます。ポート number を指定した場合、そのポートを持つウェブサイトのみがパターンに一致します。ポート番号がない場合、 そのパターンはすべてのポートに一致します。
パターンの優先度
1 つのサイトで複数のコンテンツ設定ルールが適用される場合、より具体的な パターンが優先されます。
たとえば、次のパターンは優先順位順に並んでいます。
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 が考慮されます。たとえば、特定のサイトによるアクセスが
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> |
リソース識別子
リソース識別子を使用すると、コンテンツ タイプの特定のサブタイプのコンテンツ設定を指定できます。
現在、リソース識別子をサポートしているコンテンツ タイプは contentSettings.plugins
のみです。
特定のプラグインを識別します。コンテンツの設定を適用する際は、まず
そのプラグインの設定が確認されます。特定の
プラグインでは、プラグインの一般的なコンテンツの設定がチェックされます。
たとえば、コンテンツ設定ルールでリソース ID が adobe-flash-player
で、
パターン <all_urls>
の場合、リソース識別子とパターン
https://www.example.com/*
を返します。
コンテンツ タイプのリソース識別子のリストを取得するには、
contentSettings.ContentSetting.getResourceIdentifiers()
メソッドを使用します。返されるリストは、
ユーザーのパソコンにインストールされているプラグインのセット。Chrome は識別子の不変を維持しようと試みます。
継続的にモニタリングできます。
例
この API を試すには、chrome-extension-samples から contentSettings API の例をインストールしてください。 できます。
型
AutoVerifyContentSetting
列挙型
「許可」
"block"
CameraContentSetting
列挙型
「許可」
"block"
"ask"
ClipboardContentSetting
列挙型
「許可」
"block"
"ask"
ContentSetting
プロパティ
-
クリア
void
<ph type="x-smartling-placeholder"></ph> 約束この拡張機能で設定されているすべてのコンテンツ設定ルールを消去します。
clear
関数は次のようになります。(details: object, callback?: function) => {...}
-
詳細
オブジェクト
-
スコープ
範囲(省略可)
設定をクリアする場所(デフォルト: 標準)。
-
-
callback
関数(省略可)
callback
パラメータは次のようになります。() => void
-
戻り値
約束 <void>
Chrome 96 以降Promise は Manifest V3 以降でサポートされていますが、 下位互換性が確保されます同じ関数呼び出しで両方を使用することはできません。「 Promise はコールバックに渡された型と同じ型で解決されます。
-
-
get
void
<ph type="x-smartling-placeholder"></ph> 約束指定された URL ペアの現在のコンテンツ設定を取得します。
get
関数は次のようになります。(details: object, callback?: function) => {...}
-
詳細
オブジェクト
-
シークレット モード
ブール値(省略可)
シークレット セッションのコンテンツ設定を確認するかどうかを指定します。(デフォルトは false)
-
primaryUrl
文字列
コンテンツ設定を取得するプライマリ URL。プライマリ URL の意味は、コンテンツの種類によって異なります。
-
resourceIdentifier
ResourceIdentifier(省略可)
設定を取得する必要があるコンテンツ タイプの、より具体的な識別子。
-
secondaryUrl
文字列(省略可)
コンテンツ設定を取得するセカンダリ URL。デフォルトはプライマリ URL です。セカンダリ URL の意味はコンテンツの種類によって異なります。すべてのコンテンツ タイプでセカンダリ URL が使用されるわけではありません。
-
-
callback
関数(省略可)
callback
パラメータは次のようになります。(details: object) => void
-
詳細
オブジェクト
-
設定
T
コンテンツの設定。設定可能な値については、個々の ContentSetting オブジェクトの説明をご覧ください。
-
-
-
戻り値
Promise<object>
Chrome 96 以降Promise は Manifest V3 以降でサポートされていますが、 下位互換性が確保されます同じ関数呼び出しで両方を使用することはできません。「 Promise はコールバックに渡された型と同じ型で解決されます。
-
-
getResourceIdentifiers
void
<ph type="x-smartling-placeholder"></ph> 約束getResourceIdentifiers
関数は次のようになります。(callback?: function) => {...}
-
callback
関数(省略可)
callback
パラメータは次のようになります。(resourceIdentifiers?: ResourceIdentifier[]) => void
-
resourceIdentifiers
ResourceIdentifier[] 省略可
このコンテンツ タイプのリソース識別子のリスト。このコンテンツ タイプでリソース識別子を使用しない場合は
undefined
。
-
-
戻り値
Promise <ResourceIdentifier[]>
Chrome 96 以降Promise は Manifest V3 以降でサポートされていますが、 下位互換性が確保されます同じ関数呼び出しで両方を使用することはできません。「 Promise はコールバックに渡された型と同じ型で解決されます。
-
-
set
void
<ph type="x-smartling-placeholder"></ph> 約束新しいコンテンツ設定ルールを適用します。
set
関数は次のようになります。(details: object, callback?: function) => {...}
-
詳細
オブジェクト
-
primaryPattern
文字列
プライマリ URL のパターン。パターンの形式について詳しくは、コンテンツ設定パターンをご覧ください。
-
resourceIdentifier
ResourceIdentifier(省略可)
コンテンツ タイプのリソース ID。
-
スコープ
範囲(省略可)
設定を行う場所(デフォルト: 標準)。
-
secondaryPattern
文字列(省略可)
セカンダリ URL のパターン。デフォルトではすべての URL が照合されます。パターンの形式について詳しくは、コンテンツ設定パターンをご覧ください。
-
設定
任意
このルールによって適用される設定。設定可能な値については、個々の ContentSetting オブジェクトの説明をご覧ください。
-
-
callback
関数(省略可)
callback
パラメータは次のようになります。() => void
-
戻り値
約束 <void>
Chrome 96 以降Promise は Manifest V3 以降でサポートされていますが、 下位互換性が確保されます同じ関数呼び出しで両方を使用することはできません。「 Promise はコールバックに渡された型と同じ型で解決されます。
-
CookiesContentSetting
列挙型
「許可」
"block"
"session_only"
FullscreenContentSetting
値
「許可」
ImagesContentSetting
列挙型
「許可」
"block"
JavascriptContentSetting
列挙型
「許可」
"block"
LocationContentSetting
列挙型
「許可」
"block"
"ask"
MicrophoneContentSetting
列挙型
「許可」
"block"
"ask"
MouselockContentSetting
値
「許可」
MultipleAutomaticDownloadsContentSetting
列挙型
「許可」
"block"
"ask"
NotificationsContentSetting
列挙型
「許可」
"block"
"ask"
PluginsContentSetting
値
"block"
PopupsContentSetting
列挙型
「許可」
"block"
PpapiBrokerContentSetting
値
"block"
ResourceIdentifier
リソース識別子を使用するコンテンツ タイプは contentSettings.plugins
のみです。詳細については、リソース識別子をご覧ください。
プロパティ
-
description
文字列(省略可)
人が読める形式のリソースの説明。
-
id
文字列
指定されたコンテンツ タイプのリソース識別子。
Scope
ContentSetting のスコープ。次のいずれか
regular
: 通常のプロファイルの設定(他の場所でオーバーライドされない場合はシークレット モードのプロファイルに継承されます)。
incognito\_session\_only
: シークレット モード プロファイルの設定。シークレット セッション中にのみ設定でき、シークレット セッションが終了すると削除されます(通常の設定がオーバーライドされます)。
列挙型
「レギュラー サイズ」
"secret_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 は使用されません。
注: 「allow」両方のパターンが「'」の場合、設定は無効です。
タイプ
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 は使用されません。
注: 「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()
の呼び出しは無視されます。