我想知道如何在页面上基于WordPress将nonce添加到我的所有< script>
标签。例如,请在下面找到一些代码:
$ 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-&gt ; query_vars),
'current_page'=> get_query_var('paged')?get_query_var('paged'):1,
'max_page'=> $ wp_query-> max_num_pages,&#xA ;));`



 我想要这样的东西:
&#xA;&#xA; < pre>&lt; script nonce =“nonce-value”&gt; ...&lt; / script&gt;&#xA;
&#xA;&#xA; Where < strong> nonce-value 是随机的。
&#xA;&#xA;这是我需要的地方之一,是否有任何想法如何将其全局添加到&lt; script&gt;
标签?
答案 0 :(得分:0)
Haven未对此进行测试,但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>';
}
答案 1 :(得分:0)
试试这段代码,
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;
}
希望这会对你有所帮助。 更多示例,
答案 2 :(得分:0)
我在functions.php中设置了一个函数,以使用内置的wordpress函数生成随机数。
add_action( 'run_custom_nonce_value', 'custom_nonce_value' );
function custom_nonce_value () {
$created_nonce = wp_create_nonce();
define( 'NONCE_RANDVALUE', $created_nonce );
}
然后我设置此过滤器,将现时值添加到所有脚本中
add_filter( 'script_loader_tag', 'add_nonce_to_script', 10, 3 );
function add_nonce_to_script( $tag, $handle, $source ) {
custom_nonce_value();
$val_nonce = NONCE_RANDVALUE;
$search = "type='text/javascript'";
$replace = "type='text/javascript' nonce='".$val_nonce."' ";
$subject = $tag;
$output = str_replace($search, $replace, $subject);
return $output;
}
此解决方案会将随机数添加到所有正确注册的脚本中。