Я пытаюсь проверить очень простой запрос AJAX в WordPress (для диагностики зонда с большей формой), и wp_verify_nonce продолжает сбой на моем промежуточном сервере, но на моем локальном хосте он работает отлично!
Моя установка такова:
В моем плагине __construct есть функция:
wp_register_script('request-quote', plugins_url('scripts/request-quote.js', $this->root), array('jquery'));
wp_enqueue_script('request-quote');
wp_localize_script('request-quote', 'pqimageupload',
[
'ajax_url' => admin_url('admin-ajax.php'),
'security' => wp_create_nonce( 'my_text' )
]);
add_action('wp_ajax_prq_checknonce', [$this, 'prq_checknonce'] );
add_action('wp_ajax_nopriv_prq_checknonce', [$this, 'prq_checknonce'] );
Тогда в моем запросе-quote.js у меня есть это:
$('#verify_nonce').on('click', function(){
console.log('checking nonce');
let data = {
action: 'prq_checknonce',
security: pqimageupload.security,
}
$.ajax({
url: pqimageupload.ajax_url,
type: 'POST',
data: data,
cache: false,
dataType: 'json',
success: function (data, textStatus, jqXHR) {
console.log(data);
}
});
return false;
});
Моя функция prq_checknonce:
function prq_checknonce()
{
$response = [];
$response['nonce'] = $_REQUEST['security'];
$response['verify'] = wp_verify_nonce($_REQUEST['security'], 'my_text');
$json = json_encode($response);
echo $json;
die();
}
Моя HTML-ссылка:
<a href="#" id="verify_nonce">Verify nonce</a>
Так что это так просто, как вы можете получить! И когда я нажимаю на ссылку на моем локальном сервере: http://abc.localhost/form/' the console log shows that
проверять is 1, however when I upload this to my staging server
https://abc.myserver.com/form/` консольный журнал показывает, что ложно!
У кого-нибудь есть идеи?
высоко ценится
Lar