В моем веб-приложении (на основе Hanami 2.2) включена ContentSecurityPolicy, позволяющая запускать встроенные сценарии с использованием стратегии nonce
config/app.rb
Код: Выделить всё
config.actions.content_security_policy[:script_src] = "'self' 'nonce'"
Поэтому, когда страница загружается в браузере, теги CSS и JS (включаемые с помощью вспомогательных методов hanami stylesheet_tag и javascript_tag) в DOM имеют прикрепленный nonce (как это можно увидеть во фрагменте, извлеченном из источника загруженной страницы)
Теперь у меня есть страница, на которой есть простая форма, содержащая два текстовых поля.
Форма должна быть отправлена через jQuery AJAX API, а ответ должен отобразить код JS, определенный в следующем файле.
app/templates/home/create.js.haml
Код: Выделить всё
%script{ nonce: content_security_policy_nonce }
:plain
alert("Hello");
Это похоже на то, как ответ JS отображается в Rails, как показано в файле app/views/users/create.js.erb по адресу
https://guides.rubyonrails.org/v6.0/wor ... e-concerns.
Обратите внимание, что nonce установлен в теге скрипта. в файле js.haml выше должно быть таким же, как установлено в теге
Подробнее здесь:
https://stackoverflow.com/questions/796 ... cuting-jav