Ресурсы, доступные через Интернет, — это файлы внутри расширения, к которым могут получить доступ веб-страницы или другие расширения. Расширения обычно используют эту функцию для предоставления изображений или других ресурсов, которые необходимо загрузить на веб-страницы, но любой ресурс, включенный в пакет расширения, можно сделать доступным через Интернет.
По умолчанию никакие ресурсы не доступны через Интернет, поскольку это позволяет вредоносному веб-сайту распознавать расширения, установленные пользователем, или использовать уязвимости (например , ошибки XSS ) в установленных расширениях. Только страницы или сценарии, загруженные из источника расширения, могут получить доступ к ресурсам этого расширения.
Манифестная декларация
Используйте свойство манифеста web_accessible_resources
чтобы объявить, какие ресурсы доступны и в каком источнике. Это свойство представляет собой массив объектов, объявляющий правила доступа к ресурсам. Каждый объект перечисляет несколько ресурсов расширения и должен предоставить значение хотя бы для одного из ключей matches
или extension_ids
, чтобы указать источники, которые могут получить доступ к этим ресурсам.
{
...
"web_accessible_resources": [
{
"resources": [ "test1.png", "test2.png" ],
"matches": [ "https://web-accessible-resources-1.glitch.me/*" ]
}, {
"resources": [ "test3.png", "test4.png" ],
"matches": [ "https://web-accessible-resources-2.glitch.me/*" ]
}
],
...
}
Каждый объект массива содержит следующие элементы:
-
"resources"
- Массив строк, каждая из которых содержит относительный путь к заданному ресурсу из корневого каталога расширения. Ресурсы могут содержать звездочки (
*
) для совпадений с подстановочными знаками. Например,"/images/*"
рекурсивно предоставляет все, что находится в каталогеimages/
расширения, а"*.png"
предоставляет все файлы PNG. -
"matches"
- Массив строк, каждая из которых содержит шаблон соответствия , указывающий, какие сайты могут получить доступ к этому набору ресурсов. Для сопоставления URL-адресов используется только источник. Источники включают соответствие субдоменов. Google Chrome выдает ошибку «Неверный шаблон соответствия», если путь к шаблону отличается от «/*».
-
"extension_ids"
- Массив строк, каждая из которых содержит идентификатор расширения, которое может получить доступ к ресурсам.
Каждый элемент должен включать элемент "resources"
и элемент "matches"
или "extension_ids"
. При этом устанавливается сопоставление, которое предоставляет указанные ресурсы либо веб-страницам, соответствующим шаблону, либо расширениям с совпадающими идентификаторами.
Навигация по ресурсам
Ресурсы доступны на веб-странице по URL- chrome-extension://[PACKAGE ID]/[PATH]
, который можно сгенерировать с помощью метода runtime.getURL()
. Ресурсы обслуживаются с соответствующими заголовками CORS , поэтому они доступны с помощью fetch()
.
Переход от веб-источника к ресурсу расширения блокируется, если ресурс не указан как доступный через Интернет. Обратите внимание на эти угловые случаи:
- Когда расширение использует API webRequest для перенаправления запроса общедоступного ресурса на ресурс, который недоступен через Интернет, такой запрос также блокируется.
- Перенаправления с общедоступных ресурсов блокируются, даже если ресурс, недоступный через Интернет, принадлежит расширению перенаправления.
- Навигация блокируется в режиме инкогнито, если в поле
"incognito"
не установлено значение"split"
.
Сами сценарии содержимого разрешать не требуется.
Пример
Пример веб-доступных ресурсов демонстрирует использование этого элемента в рабочем расширении.