Описание
Используйте API chrome.contentSettings для изменения настроек, определяющих, могут ли веб-сайты использовать такие функции, как файлы cookie, JavaScript и плагины. В более общем смысле, настройки контента позволяют настраивать поведение Chrome для каждого сайта в отдельности, а не глобально.
Разрешения
contentSettingsМанифест
Для использования API необходимо указать разрешение "contentSettings" в манифесте вашего расширения. Например:
{
"name": "My extension",
...
"permissions": [
"contentSettings"
],
...
}
шаблоны настроек контента
Вы можете использовать шаблоны для указания веб-сайтов, на которые влияет каждый параметр содержимого. Например, https://*.youtube.com/* указывает на youtube.com и все его поддомены. Синтаксис для шаблонов параметров содержимого такой же, как и для шаблонов соответствия , с некоторыми отличиями:
- Для URL-адресов
http,httpsиftpпуть должен быть представлен в виде подстановочного знака (/*). Для URL-адресовfileпуть должен быть указан полностью и не должен содержать подстановочных знаков. - В отличие от шаблонов соответствия, шаблоны настроек контента могут указывать номер порта. Если указан номер порта, шаблон соответствует только веб-сайтам, использующим этот порт. Если номер порта не указан, шаблон соответствует всем портам.
Приоритет шаблона
Если для данного сайта применяется более одного правила настройки контента, приоритет имеет правило с более специфическим шаблоном.
Например, следующие шаблоны упорядочены по приоритету:
-
https://www.example.com/* -
https://*.example.com/*(соответствует example.com и всем поддоменам) -
<all_urls>(соответствует каждому URL)
Три типа символов-заменителей влияют на специфичность шаблона:
- Использование символов-заменителей в порту (например,
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 определяется на основе URL-адреса HTTP-запроса (который в данном случае является основным 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 , где идентификатор ресурса идентифицирует конкретный плагин. При применении параметров содержимого сначала проверяются параметры для конкретного плагина. Если параметры для конкретного плагина не найдены, проверяются общие параметры содержимого для плагинов.
Например, если правило настройки содержимого содержит идентификатор ресурса adobe-flash-player и шаблон <all_urls> , оно имеет приоритет над правилом без идентификатора ресурса и шаблона https://www.example.com/* , даже если этот шаблон более специфичен.
Получить список идентификаторов ресурсов для типа контента можно, вызвав метод contentSettings.ContentSetting.getResourceIdentifiers . Возвращаемый список может меняться в зависимости от установленных плагинов на компьютере пользователя, но Chrome старается сохранять стабильность идентификаторов после обновлений плагинов.
Примеры
Чтобы опробовать этот API, установите пример contentSettings API из репозитория chrome-extension-samples .
Типы
AutoVerifyContentSetting
Перечисление
"позволять" "блокировать"
CameraContentSetting
Перечисление
"позволять" "блокировать" "просить"
ClipboardContentSetting
Перечисление
"позволять" "блокировать" "просить"
ContentSetting
Характеристики
- прозрачный
пустота
ОбещатьУдалите все правила настройки содержимого, установленные этим расширением.
Функция
clearвыглядит следующим образом:(details: object, callback?: function) => {...}
- подробности
объект
- объем
Область применения необязательна
Где можно сбросить настройку (по умолчанию: обычная).
- перезвонить
функция необязательна
Параметр
callbackвыглядит следующим образом:() => void
- возвраты
Обещание<пустота>
Chrome 96+Поддержка промисов доступна только для Manifest V3 и более поздних версий; для других платформ необходимо использовать колбэки.
- получать
пустота
ОбещатьПолучает текущие настройки содержимого для заданной пары URL-адресов.
Функция
getвыглядит следующим образом:(details: object, callback?: function) => {...}
- подробности
объект
- инкогнито
логический необязательный
Следует ли проверять настройки контента для режима инкогнито. (по умолчанию -false)
- primaryUrl
нить
Основной URL-адрес, для которого следует получить настройки содержимого. Обратите внимание, что значение основного URL-адреса зависит от типа содержимого.
- resourceIdentifier
ResourceIdentifier ( необязательно)
Более точное указание типа контента, для которого следует получить настройки.
- вторичный URL
строка необязательный
Дополнительный URL-адрес, для которого следует получить настройки содержимого. По умолчанию используется основной URL-адрес. Обратите внимание, что значение дополнительного URL-адреса зависит от типа содержимого, и не все типы содержимого используют дополнительные URL-адреса.
- перезвонить
функция необязательна
Параметр
callbackвыглядит следующим образом:(details: object) => void
- подробности
объект
- параметр
Т
Параметр содержимого. Возможные значения см. в описании отдельных объектов ContentSetting.
- возвраты
Promise<object>
Chrome 96+Поддержка промисов доступна только для Manifest V3 и более поздних версий; для других платформ необходимо использовать колбэки.
- getResourceIdentifiers
пустота
ОбещатьФункция
getResourceIdentifiersвыглядит следующим образом:(callback?: function) => {...}
- перезвонить
функция необязательна
Параметр
callbackвыглядит следующим образом:(resourceIdentifiers?: ResourceIdentifier[]) => void
- resourceIdentifiers
ResourceIdentifier [] необязательный
Список идентификаторов ресурсов для данного типа контента или
undefinedесли данный тип контента не использует идентификаторы ресурсов.
- возвраты
Promise< ResourceIdentifier []>
Chrome 96+Поддержка промисов доступна только для Manifest V3 и более поздних версий; для других платформ необходимо использовать колбэки.
- набор
пустота
ОбещатьПрименяет новое правило настройки содержимого.
Функция
setвыглядит следующим образом:(details: object, callback?: function) => {...}
- подробности
объект
- primaryPattern
нить
Шаблон для основного URL-адреса. Подробную информацию о формате шаблона см. в разделе «Шаблоны настроек содержимого» .
- resourceIdentifier
ResourceIdentifier ( необязательно)
Идентификатор ресурса для типа контента.
- объем
Область применения необязательна
Где задать параметр (по умолчанию: обычный).
- вторичный шаблон
строка необязательный
Шаблон для дополнительного URL-адреса. По умолчанию соответствует всем URL-адресам. Подробную информацию о формате шаблона см. в разделе «Шаблоны настроек содержимого» .
- параметр
любой
Параметр, применяемый этим правилом. Возможные значения см. в описании отдельных объектов ContentSetting.
- перезвонить
функция необязательна
Параметр
callbackвыглядит следующим образом:() => void
- возвраты
Обещание<пустота>
Chrome 96+Поддержка промисов доступна только для Manifest V3 и более поздних версий; для других платформ необходимо использовать колбэки.
CookiesContentSetting
Перечисление
"позволять" "блокировать" "session_only"
FullscreenContentSetting
Ценить
"позволять"
ImagesContentSetting
Перечисление
"позволять" "блокировать"
JavascriptContentSetting
Перечисление
"позволять" "блокировать"
LocationContentSetting
Перечисление
"позволять" "блокировать" "просить"
MicrophoneContentSetting
Перечисление
"позволять" "блокировать" "просить"
MouselockContentSetting
Ценить
"позволять"
MultipleAutomaticDownloadsContentSetting
Перечисление
"позволять" "блокировать" "просить"
NotificationsContentSetting
Перечисление
"позволять" "блокировать" "просить"
PluginsContentSetting
Ценить
"блокировать"
PopupsContentSetting
Перечисление
"позволять" "блокировать"
PpapiBrokerContentSetting
Ценить
"блокировать"
ResourceIdentifier
Единственный тип контента, использующий идентификаторы ресурсов, — это contentSettings.plugins . Дополнительную информацию см. в разделе «Идентификаторы ресурсов» .
Характеристики
- описание
строка необязательный
Удобочитаемое описание ресурса.
- идентификатор
нить
Идентификатор ресурса для заданного типа контента.
Scope
Область действия параметра ContentSetting. Один из вариантов: regular : настройка для обычного профиля (которая наследуется профилем в режиме инкогнито, если не переопределена в другом месте), incognito\_session\_only : настройка для профиля в режиме инкогнито, которая может быть установлена только во время сеанса в режиме инкогнито и удаляется по его завершении (переопределяет обычные настройки).
Перечисление
"обычный" "incognito_session_only"
SoundContentSetting
Перечисление
"позволять" "блокировать"
Характеристики
automaticDownloads
Разрешить ли сайтам автоматически загружать несколько файлов. Один из вариантов: allow : разрешить сайтам автоматически загружать несколько файлов, block : не разрешать сайтам автоматически загружать несколько файлов, ask : запрашивать подтверждение, когда сайт хочет автоматически загрузить файлы после первого файла. По умолчанию используется ask . Основной URL — это URL фрейма верхнего уровня. Дополнительный URL не используется.
autoVerify
Разрешить ли сайтам использовать API частных токенов . Одно из allow : allow: разрешить сайтам использовать API частных токенов, block : заблокировать сайтам использование API частных токенов. По умолчанию — allow . При вызове set() основной шаблон URL должен быть <all_urls> . Дополнительный URL не используется.
camera
Разрешить ли сайтам доступ к камере. Один из allow : allow: разрешить сайтам доступ к камере, block : не разрешать сайтам доступ к камере, ask : запрашивать доступ, когда сайт хочет получить доступ к камере. По умолчанию используется ask . Основной URL — это URL документа, запросившего доступ к камере. Дополнительный URL не используется. ПРИМЕЧАНИЕ: Параметр 'allow' недействителен, если оба шаблона равны '<all_urls>'.
Тип
clipboard
Разрешать ли сайтам доступ к буферу обмена через расширенные возможности API асинхронного буфера обмена? К «расширенным» возможностям относятся все, кроме записи встроенных форматов после действия пользователя, то есть возможность чтения, возможность записи пользовательских форматов и возможность записи без действия пользователя. Один из вариантов: allow : разрешить сайтам использовать расширенные возможности буфера обмена, block : не разрешать сайтам использовать расширенные возможности буфера обмена, ask : запрашивать доступ, когда сайт хочет использовать расширенные возможности буфера обмена. По умолчанию используется ask . Основной URL — это URL документа, запросившего доступ к буферу обмена. Дополнительный URL не используется.
cookies
Разрешать ли веб-сайтам устанавливать файлы cookie и другие локальные данные. Один из allow : принимать файлы cookie, block : блокировать файлы cookie, session\_only : принимать файлы cookie только для текущей сессии. По умолчанию — allow . Основной URL — это URL-адрес источника файлов cookie. Дополнительный 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 : allow: разрешить сайтам доступ к микрофону, block : не разрешать сайтам доступ к микрофону, ask : запрашивать доступ к микрофону, когда сайт этого хочет. По умолчанию используется ask . Основной URL — это URL документа, запросившего доступ к микрофону. Дополнительный URL не используется. ПРИМЕЧАНИЕ: Параметр 'allow' недействителен, если оба шаблона равны '<all_urls>'.
mouselock
Устарело. Больше не имеет никакого эффекта. Разрешение на блокировку мыши теперь автоматически предоставляется для всех сайтов. Значение всегда « allow .
notifications
Разрешать ли сайтам показывать уведомления на рабочем столе. Один из вариантов: allow : разрешить сайтам показывать уведомления на рабочем столе, block : не разрешать сайтам показывать уведомления на рабочем столе, ask : запрашивать разрешение, когда сайт хочет показать уведомление на рабочем столе. По умолчанию используется ask . Основной URL — это URL документа, который хочет показать уведомление. Дополнительный URL не используется.
plugins
Устарело. После удаления поддержки Flash в Chrome 88 это разрешение больше не имеет никакого эффекта. Значение всегда block . Вызовы set() и clear() будут игнорироваться.
Тип
popups
Разрешить ли сайтам показывать всплывающие окна. Одно из allow : allow: разрешить сайтам показывать всплывающие окна, block : не разрешать сайтам показывать всплывающие окна. По умолчанию — block . Основной URL — это URL фрейма верхнего уровня. Дополнительный URL не используется.
Тип
unsandboxedPlugins
Устарело. Ранее это позволяло разрешать сайтам запускать плагины вне песочницы, однако после удаления процесса Flash Broker в Chrome 88 это разрешение больше не имеет никакого эффекта. Значение всегда block . Вызовы set() и clear() будут игнорироваться.