我正在尝试在WordPress中验证一个非常简单的ajax请求(以诊断具有较大形式的探针),而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'] );
然后在我的request-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/`控制台日志显示验证为false!
有人有什么想法吗?
非常感谢 拉尔
答案 0 :(得分:0)
Gaaahhh我是如此愚蠢!!!这是一个缓存问题,因此当我删除临时文件时,我没有删除cookie……删除cookie可以解决问题!