Добавление одноразового номера в тег <script> - PullRequest
0 голосов
/ 24 апреля 2018

Мне интересно, как добавить nonce ко всем моим <script> тегам на странице на основе WordPress. Например, найдите код ниже:

$my_nonce = wp_create_nonce('nonce-'.rand());
$nonces = "Content-Security-Policy: script-src 'self nonce-".$my_nonce."'";
header( "{$nonces}");

wp_localize_script( 'my_loadmore', 'my_loadmore_params', array(
'ajaxurl' => site_url() . '\/wp-admin\/admin-ajax.php',
'posts' => json_encode( $wp_query->query_vars ), 
'current_page' => get_query_var( 'paged' ) ? get_query_var('paged') : 1,
         'max_page' => $wp_query->max_num_pages,
) );`

И я хочу что-то вроде этого:

<script nonce="nonce-value">...</script>

Где nonce-value является случайным.

Это единственное место, где мне это нужно, есть ли идея, как добавить его глобально к тегу <script>?

Ответы [ 2 ]

0 голосов
/ 24 апреля 2018

Попробуйте этот код,

add_filter('script_loader_src','add_nonce_to_script',10,2);
function add_nonce_to_script($src, $handle){
   $my_nonce = wp_create_nonce('nonce-'.rand());
   return $src.' nonce= '.$my_nonce;
}

Надеюсь, это поможет вам. Для большего примера,

Добавление дополнительных атрибутов в тег скрипта

0 голосов
/ 24 апреля 2018

Не проверял это, но Wordpress предоставляет фильтр script_loader_tag , который позволяет изменять сгенерированные теги сценариев из сценариев в очереди.

add_filter( 'script_loader_tag', 'add_nonce_to_script', 10, 3 );

function add_nonce_to_script( $tag, $handle, $src ) {
    global $my_nonce;
    return '<script type="text/javascript" src="' . esc_url( $src ) . '" nonce="' . esc_attr( $my_nonce ) . '"></script>';
}
...