Почему некоторые теги скриптов пропускаются при добавлении одноразовых номеров для политики безопасности контента в WordPress?
Я работаю над сайтом WordPress и пытаюсь добавить nonce ко всем сценариям. Ниже приведен код, который я использую. Он отлично работает для большинства тегов, но, похоже, некоторые теги сценариев пропускаются. Один из тегов сценария автоматически генерируется WordPress и также пропускается.
add_filter( 'script_loader_tag', 'wp_script_tag_nonce', 10, 3 );
function wp_script_tag_nonce( $tag, $handle ) {
$nonce = TPJ_NONCE; // Or whatever your nonce value should be
$tag = str_replace( '<script ', "<script nonce='$nonce'", $tag );
return $tag;
}
изображения ошибки и пропущенных скриптов
как вы можете видеть, большинство скриптов имеют одноразовый номер, но не имеют ошибок одноразового номера.
Я пытался использовать wp_enqueue_scripts, но он не позволяет изменять тег сценария.
1 ответ
The script_loader_tag
Фильтр применяется только к тегам, которые загружают файлы JavaScript, а не к встроенным блокам JavaScript. Когда я последний раз смотрел (около месяца назад), не было фильтра для встроенных скриптов, добавленных черезwp_add_inline_script()
, поэтому для моего сайта мне пришлось добавитьunsafe-inline
кscript-src
Директива CSP, разрешающая работу встроенных скриптов.