создание Webextension с помощью parcel и web-ext, какова правильная политика безопасности контента

Parcel поддерживает объединение webextensions: https://v2.parceljs.org/recipes/web-extension/

Команда для настройки сервера сборки и отслеживания изменений: parcel src/manifest.json --host localhost --target webext-dev. Это свяжет webextension в папку.

Я бы хотел запустить это расширение с web-ext run. Это инструмент от Mozilla, который автоматически загружает Webextension в Firefox и перезагружается при изменениях. Запуск этого в dist/ Папка должна стать отличной парой с посылкой.

Но на практике связанное с ним webextension не выполняет мои сценарии содержимого. Это потому, что посылка обслуживает их с локального хоста. Нужен флаг --host localhostдля замены горячего модуля. Но тогда webextension жалуется "page's settings blocked loading of a resource at ws://localhost:1234/ (“connect-src”)."

В документации по участкам также демонстрируется команда сборки: parcel build src/manifest.json --target webext-prod. И если я выполню web-ext run из dist/webext-prodРаботает как часы. Новый запуск команды сборки участка автоматически запускает перезагрузку webextension. Но это непродуктивно для разработки, так как сборка участков занимает слишком много времени. Я бы хотел использовать его настройку для разработки.

Как я могу правильно настроить политику безопасности содержимого моего webextension, чтобы разрешить сценарии содержимого, загружаемые с localhost?

Пока запись в моем manifest.json выглядит так:

        "content_security_policy": "connect-src 'self' 'localhost:';",

1 ответ

  1. 'localhost:'имеет неправильный синтаксис, не следует использовать одинарные кавычки и завершающее двоеточие ":". Это просто конкретное имя хоста, такое как доменное имя.

  2. localhost источник обложки http://localhost а также https://localhost(только схемы http / https), но только со стандартными портами .

  3. 'self' жетоны ws://localhost а также wss://localhost host-source только в браузерах CSP3 и только со стандартными портами.

Поскольку вы используете нестандартный номер порта, попробуйте:

      "content_security_policy": "connect-src 'self' ws://localhost:1234;"
Другие вопросы по тегам