Как на сайте заменить источник на файл из расширения?

Необходимо при установленном расширении брать ресурс локально, а не загружать его из сети.

Разрешения в manifest.json:

"permissions": [ "storage", "webRequest", "webRequestBlocking", "contextMenus", "https://example.org/" ]

Карта замен:

const replaces = new  Map([
    ["https://example.org/file1.avi", "/v1/file1.avi"],
    ["https://example.org/file2.avi", "/v1/file2.avi"],
]);

В onBeforeRequest :

ext.onBeforeRequest = (details) => {
  if(replaces.has(details.url)){
    var replaced_url = chrome.extension.getURL(replaces.get(details.url));
    console.log(replaced_url);
    return {redirectUrl: replaced_url };
  }  
};

В консоли расширения выводятся нормальные ссылки.

А на сайте "example.org" - chrome-extension://invalid/.

Выходит у сайта, нет доступа к файлам расширения.

Как можно разрешить странице доступ к файлам расширения?

PS: если подставлять ссылки на другой сайт, то при замене заголовка Access-Control-Allow-Origin на * все работает, но не с фалами расширения.


Ответы (1 шт):

Автор решения: Максим

Как оказалось необходимо явно разрешить доступ к файлам расширения из сети, для этого необходимо в manifest.json добавить следующий раздел:

"web_accessible_resources":[
    "resources/*",
    "v1/*"
]

В примере, все файлы из каталогов resources и v1 будут доступны из сети.

→ Ссылка