Как использовать gRPC в WebExtension

#javascript #google-chrome-extension #websocket #protocol-buffers #firefox-addon-webextensions

#javascript #google-chrome-расширение #websocket #протокол-буферы #firefox-дополнение-webextensions

Вопрос:

WebExtension, который я создаю, должен выполнять вызовы gRPC на сервер через соединение websocket. У меня возникли проблемы с выяснением того, как настроить буферы gRPC и протокола, чтобы я мог генерировать заглушки, которые я могу использовать в своем WebExtension.

Я попробовал компилятор Google, но он выводит код, который использует функции eval / созданные вручную. Поскольку WebExtensions имеют ограниченное подмножество javascript, я подумал, что protobuf.js может помочь, так как он может генерировать код, который не использует eval, но я не смог заставить его работать. Я уже несколько дней пытаюсь разобраться в этом, но этот конкретный случай трудно понять только из доступной документации.

Может кто-нибудь дать мне пошаговое руководство о том, как настроить необходимые инструменты, сгенерировать код, совместимый с WebExtension, и, наконец, использовать его с подключением к websocket?

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

1. Вы можете использовать evals в расширениях либо путем изменения CSP , либо в изолированном iframe .

2. Есть ли способ сохранить CSP как есть? Я работаю с конфиденциальными данными в своем WebExtension и не хочу снижать безопасность.

3. Используйте второй подход, о котором я упоминал.

4. Похоже, это не переносится в Firefox.

5. Вы можете добавить nonce в CSP и использовать атрибут nonce для загрузки этих сгенерированных сценариев. Другим подходом, который стоит попробовать, был бы WASM.