我想知道如何在基于<script>的页面上向我的所有WordPress标记中添加nonce。例如,请在下面找到一些代码:
$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>其中的值是随机的。
这只是我需要的地方之一,知道如何将它全局添加到<script>标记中吗?
发布于 2018-04-24 12:55:26
还没有测试过这一点,但是Wordpress确实提供了一个标签过滤器,它允许您修改从排队脚本中生成的脚本标记。
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>';
}发布于 2020-01-09 20:09:20
我在functions.php中设置了一个函数,以使用构建的wordpress函数生成一个nonce。
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;
}此解决方案将向所有正确注册的脚本中添加当前的内容。
发布于 2018-04-24 13:08:11
试试这段代码,
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;
}希望这能帮到你。举个例子,
https://stackoverflow.com/questions/50002041
复制相似问题