Может ли фоновый скрипт расширения Firefox отправлять перекрестные запросы к URL-адресу blob-объекта в контексте страницы?

#javascript #firefox #firefox-addon-webextensions

#javascript #firefox #firefox-addon-webextensions

Вопрос:

У меня есть скрипт содержимого, введенный на страницу, который получает файл от пользователя (из диалогового окна ввода файла), и я хочу получить доступ к этому файлу из контекста фонового скрипта для дальнейшей обработки. Поэтому я создаю URL-адрес blob-объекта ( URL.createObjectURL(file) ) и отправляю его в фоновый скрипт. (Я не отправляю объект file напрямую с помощью API обмена сообщениями, потому что это не поддерживается в браузере Chromium, хотя это отлично работает в Firefox)

В фоновом сценарии я пытаюсь получить доступ к URL-адресу с помощью Fetch API. Это приводит к ошибке в about:debugging консоли с жалобой на запрещенный доступ из домена фонового скрипта к домену контекста страницы.

Если у меня настроены разрешения хоста в my manifest.json . Согласно MDN, настройка разрешений хоста для моего расширения позволяет

XMLHttpRequest и получать доступ к этим источникам без ограничений перекрестного происхождения (даже для запросов, сделанных из сценариев содержимого).

Я предполагаю, что это также позволяет фоновому скрипту получать доступ к источнику страницы и, следовательно, к файловому объекту, который я получаю из <input> элемента в контексте страницы.

В Chrome этот подход работает просто отлично.

Я прав в своем подходе / интерпретации? Или я что-то упускаю, связанное с ограничениями перекрестного происхождения, и Chrome более снисходителен в этом отношении?

Комментарии:

1. Звучит как ошибка в Firefox, попробуйте посмотреть на его сайте bugzilla. Я думаю, вы могли бы просто отправить файловый объект в FF в качестве обходного пути?

2. @wOxxOm, да, я могу создавать разделы, зависящие от браузера, в своем коде, но тогда мне нужно быть уверенным, что приведенный выше подход верен и будет продолжать работать в Chrome в будущем. Я уже быстро просмотрел Bugzilla, но ничего не смог найти, поэтому подумал спросить здесь, прежде чем начать жаловаться там 😉

3. Подход правильный, и большой двоичный объект должен быть доступен фоновому скрипту независимо от того, был ли он создан скриптом содержимого или самой страницей. Предполагая, что URL-адрес объекта blob-объекта не был отозван.