wp_verify_nonce在登台服务器上返回false,但在本地主机上返回true

时间:2019-04-01 15:23:40

标签: javascript wordpress

我正在尝试在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!

有人有什么想法吗?

非常感谢 拉尔

1 个答案:

答案 0 :(得分:0)

Gaaahhh我是如此愚蠢!!!这是一个缓存问题,因此当我删除临时文件时,我没有删除cookie……删除cookie可以解决问题!