Ошибка CSP при использовании сторонней библиотеки в плагине

После множества попыток и подходов мне удалось успешно загрузить стороннюю библиотеку для использования в моём плагине.

Библиотека находится по пути public/javascripts/some-library.js.

В моём контроллере я могу успешно загрузить скрипт через:

loadScript("/plugins/my-plugin/javascripts/some-library.js")

В некоторых местах этого файла библиотека создаёт объекты Blob и присваивает их переменным, которые затем используются. Например:

var A=URL.createObjectURL(new Blob(['\n\tsome code snippet...],{type:"application/javascript"}))

Однако при попытке использовать эту библиотеку в коде моего плагина возникает ошибка:

Отказано в загрузке скрипта 'blob:http://localhost:4200/f33a6788-a853-4286-883a-48cb8e2c9cc1', так как это нарушает следующую директиву политики безопасности контента: "script-src http://localhost:4200/assets/ и т. д."

Как лучше всего обойти эту проблему?

Заранее спасибо за любую помощь и советы!

А что, если просто добавить http://localhost:4200 в CSP?

Я на самом деле пробовал это, но ничего не изменилось :confused:

А как насчет blob:http://localhost:4200?

Пытался и это, но для CSP это недопустимое утверждение :confused:

Для тех, кто случайно наткнулся на это, правильная строка для добавления в csp script src — blob:

Подождите! Вам не нужно внедрять CSP в процессе разработки — вы не подвержены риску со стороны злоумышленников?

Это также может заблокировать некоторые инструменты разработчика.

Просто отключите эту настройку:

Просто.

Я бы отложил эту головную боль до тех пор, пока у вас не будет работающего плагина, протестированного на продакшн-сервере для тестирования.

Действительно, я находился на этапе подготовки к запуску в продакшн, так что это была последняя проблема, которую нужно было решить. Кроме того, я не люблю откладывать такие вещи, особенно когда мне нужно выяснить, могут ли они стать решающим препятствием, и мне придется искать совершенно другой путь :man_surfing:

Да, но вы должны работать над конфигурацией CSP на сервере staging для продакшена, который имеет реальный интернет-адрес.

Localhost — это не интернет-адрес! :slight_smile::wink: Он даже не https …