Почему некоторые теги скриптов пропускаются при добавлении одноразовых номеров для политики безопасности контента в 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, разрешающая работу встроенных скриптов.

Источник:https://github.com/WordPress/WordPress/blob/3d1140c8988bb42a01c15a483aaa5fb22c80f1a9/wp-includes/class-wp-scripts.php#L230

Другие вопросы по тегам